问题标签 [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 回答
1111 浏览

encoding - 我应该使用哪种数据结构进行位填充?

我正在尝试为我正在从事的项目实施 bitstuffing,即一个简单的软件 AFSK 调制解调器。简化的协议如下所示:

现在我需要0111 1110在接收到的数据中找到保留的序列,因此必须确保头部和数据都不包含六个连续1的 s。这可以通过位填充来完成,例如在每个五个1s 的序列之后插入一个零:

转换为

转换为

如果我想有效地实现这一点,我想我不应该使用1s 和0s 的数组,我必须将数据字节转换为1s 和0s,然后填充一个数组等,但静态大小的位域似乎也不适合,因为由于位填充,内容的长度是可变的。

我可以使用哪种数据结构来更有效地进行位填充?

0 投票
5 回答
64074 浏览

networking - 位填充示例

我正在阅读一个示例

位填料。假设数据链路层从网络层接收到以下位串:01110111101111101111110。位填充后的结果串是什么?将添加的每个位加粗。

回答:

这个答案是如何得出的?我的理解是位填充通过在帧的开头和结尾插入特定的位序列(称为标志值)来工作。我不明白的是:

  1. 我们没有被告知标志值!
  2. 我们没有被告知框架有多大,那么我们怎么知道在哪里放置旗帜呢?

附加信息:我认为这个网络是以太网。

附加信息 2:位标志是01111110

老实说,我想我明白了,但答案不是不完整,因为他们没有在结尾或开头添加标志 01111110 吗?他们只是在消息中出现这种比特模式时处理了问题。

其他例子:这里他们也这样做。

0 投票
1 回答
409 浏览

c# - 过滤出具有特定值的字节并异或下一个字节

我收到一个字节数组,并且必须从数组中删除所有 7Dh 和独占或​​以下 20h 字节才能恢复原始数据字节。

做这个的最好方式是什么?

0 投票
1 回答
30 浏览

sql-server-2008 - 将四个 ID 列合二为一

我有一个视图,其中填充了来自 4 个视图的数据。现在在组合视图中,我从每个视图中获得四个 ID 列,它们的值不相似。我需要将它们全部放在一个字段中(比如 ID_NEW)。我可以通过填充继续吗?请帮帮我。

0 投票
1 回答
463 浏览

java - 关于 Java 的位填充

我正在为有关使用位填充的数据传输的分配进行编程,其中在传输 5 个相同的位时将反转的位添加到数据流中(即在 5 个“0”之后,将添加一个“1”;5“ 1”,将添加一个“0”)。我知道如何从原始文本文档中获取一些信息,以及如何将其写入新的文本文档。但是,由于某种原因,我关于添加反转位的编程部分出错了,这似乎是一个无限循环......

这是我的代码

0 投票
1 回答
124 浏览

bit - 如何计算位填充中0位的nof?

如果给定的字符串是01111和文本是0111101111,位填充所需的位数是多少?

0 投票
2 回答
78 浏览

java - 使用套接字时如何处理消息被分解?

我的设计

我正在使用套接字来实现聊天服务器。

客户端使用 Java 的java.net.SocketBufferedReader从服务器读取消息。

服务器端使用 Php 的socket_read()从客户端获取消息。

它使用 Php 的socket_write()从服务器发送消息。socket_write() 不保证整个原始消息都会被写出,这意味着我可能需要多次调用它才能发出整个原始消息。

(在设计方面,客户端向服务器发送消息,服务器将这些消息重新路由到适当的客户端。)

关注点

我担心的是一条消息可能会被分解成几个较小的消息。所以当服务器或客户端读取传入的消息时,它实际上可能是原始消息的片段。

问题

这是我需要考虑的事情吗?如果是,如何?

可能的解决方案

现在我正在考虑使用字节填充(这是一种网络技术,用于将字节插入原始消息中,作为标志在发送消息之前标记消息的开始和结束)。

0 投票
1 回答
427 浏览

assembly - 在装配中直接操作钻头以进行钻头填充

我是汇编新手,我想知道是否有办法让我直接操纵形成某个 int 值的位以模拟位填充。

例如,如果我有一个 32 位 int 表示我想要填充的消息,有没有办法让我在汇编中的那个数字的中间插入一个位?

此外,由于该 int 的大小将大于 32,并且我不希望这样,因为寄存器是 32 位,所以该数字的最后一位将被删除,所以不用担心。

0 投票
1 回答
137 浏览

c++ - 组装中的 Bitstuffing 无法按预期工作

我目前正在尝试学习汇编(Intel x86),并且我制作了一个程序来模拟 32 位字上的位填充 -> 每 5 个连续的相同位(5 个 0 或 5 个 1)插入一个相反的位。为了使字保持其原始的 32 位大小,如果添加填充位,则将截断较低的有效位。

这里有一些例子:

所以这是我的 C++ 程序,它测试一切是否正常,但最后两个不起作用,我不知道为什么。我按照程序使用 IDE 调试器执行的每一步运行了它几次,它似乎完全按照我的意愿执行,但结果不符合...

这就是 ASM 程序,这是最重要的

所以当我运行这个程序时,它可以很好地使用以下值(它们都放在 EAX 中)

但不适用于以下

如果有人能发现问题,那将有很大帮助!

0 投票
1 回答
7627 浏览

can-bus - CAN 总线中的位填充

接收节点(CAN 总线)如何知道位填充不是数据的实际位部分?

检查下面的这个例子。两者都是有效的流,但它们具有不同的内容:

有效- 位填充流(我的填充零粗体)

11111 0 10101

有效- 未填充流

11111010101