问题标签 [bitstream]

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 回答
7409 浏览

c - 如何编写比特流

我正在考虑使用C将一些数据写入位流。有两种方法可以想到。一种是将可变位长符号连接成一个连续的位序列,但这样我的解码器可能很难将这些符号从这个连续的位流中分离出来。另一种方法是为哪个符号分配相同数量的比特,这样解码器可以轻松恢复原始数据,但可能会浪费比特,因为符号具有不同的值,这反过来会导致比特流中的许多比特零(我猜这是浪费位)。

任何提示我应该做什么?

我是编程新手。任何帮助将不胜感激。

0 投票
1 回答
670 浏览

c# - Java Socket服务器和客户端Socket c#问题

我的客户端 c# 套接字与 java 服务器套接字通信时遇到问题。当我尝试阅读响应时,问题就出现了。我的代码是这样的:

在代码行

我的客户挂起。我必须停止应用程序。似乎不响应套接字服务器。套接字服务器的具体做法是发送和接收 BitStream。

0 投票
1 回答
847 浏览

file - wav、mp3 文件的比特流详细信息

我想知道 wav / mp3 文件中每个字节的含义。但是从谷歌中找到第 n 个......有人知道我在哪里可以找到这些信息吗?(事实上​​我想知道比特流级别的所有类型的多媒体文件)

0 投票
3 回答
842 浏览

haskell - 从 Bytestring 中获取任意位片

我想用一个lazyBytestring来表示一个比特流。我需要能够有效地从该流中获取任意位片。例如,我可能有一个ByteString长度为 10 的 a,我想ByteString从原始的ByteString.

问题是sByteStrings的数组Word8,所以取不是 8 的倍数的范围很困难。我能想到的最好的就是这个,使用Data.Binaryand Data.Binary.Bits。请注意,这get32BitRange专门针对范围 <= 32。

算法是:

  • 找到第一个Word8包含我想要的位的索引
  • 从最高下降ByteString到该指数
  • 如果位范围的低端不是 8 的倍数,则在 的开头会有一些多余的位Word8,所以跳过那些
  • 获取 (hi - lo) 位,并存储在Word32
  • 把它Word32放进一个ByteString

它看起来有点难看,有没有更有效的方法可以从 a 中获取任意切片ByteString

编辑:这是一个更有效的版本

0 投票
1 回答
110 浏览

bit-manipulation - 比特流词法分析器生成器

我有许多面向位的数据包格式。与其手工编写许多相当复杂的词法分析器,我正在寻找一个位级词法分析器生成器,一个面向位的 flex/lex 版本说。显然我可以直接写C,但我想知道是否存在这样的位级词法分析器生成器。快速谷歌后,我找到了一些媒体解码器等,但是,我解析的不是媒体文件,而是网络数据包。

或者,有没有办法在面向位的制作中运行 flex?

0 投票
1 回答
1778 浏览

java - 使用 javazoom 播放器的问题

我正在尝试使用 JLayer 类播放器播放 mp3 文件。启动线程后, myPlayer.play() 您可以听到歌曲开头的几百毫秒,然后播放器中断,我收到以下错误消息:

我在互联网上搜索了解决方案,并且我读到这个错误可能是由于某些 .mp3 文件的问题而发生的,但是 .wav 或 .wma 文件都没有被接受。有谁知道我怎样才能让播放器工作?提前致谢

0 投票
2 回答
162 浏览

bit-manipulation - 根据许多掩码拆分一个比特流的有效方法?

我正在尝试制作一个Inverse Multiplexer,它可以根据一些掩码将一个比特流分成许多。

这是想法示例

这是一个 24 位流,每个字母代表 1 位:

给定三个掩码,每个掩码没有共同点,如果 & 一起它们是 [1,1,1,1,1,1,1,1]

像这样将这些掩码应用于流

所以原始比特流被分成三个比特流,如下所示:

以上只是一个例子,我需要对给定的比特流应用任意数量的掩码。面具是保证的,彼此之间OR,有零的结果。应用AND到所有掩码的结果为 ONE。所有面具的长度相同。

我写了一个愚蠢的版本来蛮力这个想法,它基本上是在一个循环中逐位移动。认为它肯定没有效率。

我查看了这个http://graphics.stanford.edu/~seander/bithacks.html

没有线索。任何人都有更好的想法如何改善这一点?(在 x86 机器上)

0 投票
2 回答
396 浏览

c - 通过“make”(即使用 Makefile)合并 C 程序和 VHDL 比特流

我正在尝试在 Digilent Nexys II (Spartan 3E) 开发板上测试 Gadget Factory 上的 VHDL AVR8 软处理器。该项目包含一个 Makefile,用于编译 C(或其他)软件程序并将其与 FPGA 比特流合并,因此无需在软件的每次迭代中重新合成 HDL。

当我执行“make”时,我收到以下与 data2mem 相关的错误:

我在包含 VHDL 项目文件的同一目录中执行“make”,我什至在目录中有一个空白的“main.bit”文件。

有人对这里发生的事情有任何想法吗?我的空白“main.bit”文件是否需要以某种方式格式化或放置在不同的位置?

以下是我的 Makefile 的链接:

生成文件

其他需要注意的信息:我一般都是使用 Makefile 的新手,更不用说将软件与 FPGA 比特流文件合并的特定目的了。此外,我正在 Windows 7 机器上的命令提示符下尝试此操作。

提前致谢。

编辑:这是Gadget Factory 上 AVR8 软处理器的链接,这是 AVR8源代码

0 投票
2 回答
2288 浏览

c - 高效的 C 比特流实现

我目前正在研究在纯 C 中实现高效 BitStream 的各种可能策略。我需要它来实现各种基于位的压缩算法。但是,我找不到太多关于该主题的文献,而且似乎也找不到很多好的例子。

这是我正在寻找的:

  • 主要是基于宏的实现以避免函数调用
  • 向/从 BitStream 读取/写入“n”个比特的函数。
  • 读取/写入特定位数(如 5 位)的功能,在通用位上进行了优化。

我想知道以下几点:

  • 应在 BitStream 中维护的变量。可以有一个 BYTE 指针、一个字节位置、当前字节中的位索引、当前字节中剩余的位数等。
  • 如何减少要维护的变量数量。我们拥有的变量越多,我们需要更新的变量就越多。
  • 如何在单个读/写操作的上下文中使用少量中间/临时变量。
  • 是否应该在 BYTE 级别或 UINT16 级别或 UINT32 级别进行操作。也许将位累积到 UINT32 并在它已满时写入字节(或在写入完成时,使用刷新操作)会比按字节执行所有操作要快得多。
  • 我们怎样才能尽可能地避免循环。理想情况下,我们应该不惜一切代价避免循环写入比特流的位数。

这可能看起来有点矫枉过正,但是当涉及到压缩的其余代码已经被极度优化时,看起来 BitStream 部分只是破坏了整个事情。例如,在图像压缩代码中使用 SIMD CPU 指令来优化部分编码过程的汇编例程并不罕见,但最后一步是写入 BitStream。

想法,参考,任何人?谢谢!

0 投票
1 回答
62 浏览

java - 如何解决以下代码中的错误

我编写了这段代码来生成与字符串 a 对应的位流,然后反转位流中的特定位。变量 cc 在代码片段之前的处理中获取一个整数值。

但是,它在下一行给出了 Array Index Out Of Bounds 异常。

谁能告诉我可能的原因是什么?