问题标签 [bitstuffing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
99 浏览

network-protocols - 位填充自定义框架标签

我对位填充有点困惑。

如果帧标签无法在序列中显示,我了解该过程,但如果帧标签出现在帧中会发生什么?

例如:

如果帧标签是100001并且位填充的规则是每 4 个零放 1,这是序列的结果0110100001100

0 投票
1 回答
1041 浏览

networking - 位填充帮助。GATE-CS 第 3 组 2014

基于位填充的成帧协议使用 8 位分隔符模式01111110。如果填充后的输出位串为01111100101,则输入位串为

给出的正确答案是B

我的问题是为什么1即使分隔符有六个连续的 1,也会在左起五个 1 之后添加。

我认为我们1只会在获得六个连续的 1 时添加,以避免出现 0。

如果我错了,请纠正我。

0 投票
1 回答
84 浏览

networking - 当“填充字符串”是原始传输时会发生什么?

取这个原始字符串,让标志为“01111110”(0位填充):

010 0111110 101

位填充之后,得到的字符串是一样的,但是序列 01111110 的含义不同:它被解释为一个已经被填充的原始标志。

我知道我错了,我想知道我的逻辑在哪里有缺陷。

0 投票
1 回答
954 浏览

can-bus - 我如何计算标准 CAN 2.0A 数据帧中的填充位

我有一个包含 8 字节数据的 CAN 标准 2.0A 帧。例如 CAN 帧数据“00 CA 22 FF 55 66 AA DF”(8 字节) 现在我想检查在这个 CAN 帧中将添加多少填充位(位填充)。计算最坏情况位填充情况的标准公式如下:64+47+[(34+64-1)/4] ->64 ::数据位和 47 :: 开销位 2.0A

如何计算此示例 CAN 消息中的实际填充位?任何评论,建议都将受到热烈欢迎。

0 投票
1 回答
122 浏览

can-bus - Does Vehicle Spy software give visibility to CAN bus stuffed bits? If not, how can easily we see the stuffed bits?

I'm learning about bit stuffing in CAN bus messages. We're using Vehicle Spy software to extract the arbitration ids, data values, etc.

q1: Does Vehicle Spy give a tally of stuffed bits in each message? If so how do I see this?

q2: If not, then what's the easiest way to compute the number of stuffed bits in a message from the Vehicle Spy output? Will simply converting each column from hex to bits and then searching for 5-length strings of 1s/0s work work? Is there a better way?

0 投票
1 回答
112 浏览

c - C程序在linux和windows上编译的结果不一样

当我在 windows 上使用 mingw 和在 linux 上使用 gcc 编译我的程序时,可执行文件并没有给我相同的结果。

此代码应该获取文件并对其进行加密。

但是,如果最后一个块未满或文件小于 32 字节,我需要添加一些字节时,Linux 会像我想要的那样添加值“0”,但在 Windows 上,它不起作用。

顺便说一句,每个的 hexdump 都不相似。

执行它:./encrypt [FileIn] [FileOut] 1 [yourKey] [yourIV]

为 Key 和 IV 放任何你想要的东西,它们都写在测试代码中(我只是放了“1”和“1”以免出错)

argv[3] 需要为“1”才能加密

我正在使用一个里面写有“toto”的文件来测试它(放任何你想要的东西,但要低于 32 个字符,因为这是我现在正在测试的)。

要调试的代码里面的key和IV是一样的,这不是错误。

0 投票
0 回答
804 浏览

python - 实现字节填充算法的最pythonic方法

我正在做一些串行协议的东西,并想在 python 中实现一个基本的字节填充算法。我正在努力确定什么是最 Pythonic 的方法。

字节填充基本上只是用由转义字节和以可逆方式(例如异或)转换的原始字节组成的一对替换任何“保留”字节。

到目前为止,我已经提出了 5 种不同的方法,每种方法都有我不喜欢的地方:

1 过孔发生器

这可能是我最喜欢的,但也许只是因为我对基于产量的生成器有点着迷。我担心发电机会使它变慢,但它实际上是第二快的。

2 简单的字节()

经常必须创建单个元素数组才能将它们丢弃,因为我不知道任何“带有一个附加元素的复制”操作。它是最慢的。

3 使用字节数组()

似乎比直接bytes()方法更好。实际上比产量生成器慢,并且一次可以做一个字节(而不是需要中间的 1 个元素集合)。但是感觉很野蛮。这是包性能的中间。

4 字节IO()

我喜欢这里的基于流的方法。但令人讨厌的是,似乎没有像write1API 这样可以只添加 1 个字节的东西,所以我必须bytes再次制作这些中间值。如果有“写单字节”,我想要这个。它连接最慢。

5 使用替换()

这是最快的。但我不喜欢代码读取和中间扫描的方式。

我还尝试使用translate(),但 AFAICT,它只能翻译 1:1 序列。

0 投票
2 回答
307 浏览

c - 在“位填充”之后区分位

我编写了一段代码,在位流中连续 6 个“1”后添加一个“0”。但是如何解码呢?

这里是一个比特流的例子:

(“ O”代表填充的“ 0”。)

如您所见,在每个“111111”之后添加了一个“0”,并且要检索原始流,必须将其删除。简单的。

但是...如果原始流与填充流具有相同的形式怎么办?我怎么知道我是否必须删除这些位?!

0 投票
1 回答
1085 浏览

c - C++,从“int”到位字段的隐式截断

我想创建一个 64 位数据结构,每个位都应该包含一个值。为此,我创建了一个结构如下。(这与J1939 协议和 ControlApplication NAME有关,以防万一)

现在我想初始化一个对象实例CA_NAME

在这里,我得到实时分析错误(我猜来自 ReSharper)(即第一次分配) 在此处输入图像描述

初始化结构实例的正确方法是什么?

0 投票
0 回答
1100 浏览

c - 如何在c中对long int进行整数除法?

所以我正在为 C 中的 Bit Stuffing 编写代码。我想做的是从用户那里获取输入,继续使用“%”运算符将数字除以得到每个数字。只要没有在整数范围。如果我使用 long int 类型,代码不再有效,主要是因为“n/10”不再是整数。那么我如何对 long int 类型变量进行整数除法。在 python 中“//”曾经工作出于这个目的。C中有什么类似的吗?而且我不想使用数组,因为在这种情况下,用户必须一次输入一个数字。这是我的参考代码。谢谢