使用 Ruby 从二进制字符串中解包一点

Posted

技术标签:

【中文标题】使用 Ruby 从二进制字符串中解包一点【英文标题】:Unpack a bit from a binary string with Ruby 【发布时间】:2011-04-22 08:21:22 【问题描述】:

我正在使用String::unpack 从二进制流中解压缩一堆整数并加倍。如何从该比特流中解压缩单个比特?我找不到使用 unpack 解码单个位的特定指令。

【问题讨论】:

【参考方案1】:

解包可以深入到字节级别。您可以使用'C' format 读取一个无符号字节,然后您可以使用位掩码查询各个映射。

【讨论】:

当该位位于流的末尾并使用“C”指令再读取 7 个位时,我是否会冒越界的风险? @alikens 我不这么认为。当流进入 ruby​​ 时,它必须由字节组成。没有部分字节之类的东西。如果数据只有 9 位,那么它将被表示为 2 个字节,其余的将用零填充。

以上是关于使用 Ruby 从二进制字符串中解包一点的主要内容,如果未能解决你的问题,请参考以下文章

解包需要长度的字符串参数:Windows 问题?

PHP:从二进制数据流中解压缩32位整数

如何从二进制文件中读取块并使用 Python 或 Perl 解包提取结构?

Python:从二进制文件而不是文件名打开 zip 文件

如何在 PHP 中解压缩二进制字符串?

Python从二进制字符串转换为十六进制