【发布时间】:2019-01-05 23:38:36
【问题描述】:
在SEG-D seismic data format中,一些头部参数被格式化为三个字节,二进制补码,有符号二进制。所有值都是大端的。
使用String#unpack,Ruby 核心只能转换 16 位和 32 位值,不能转换 24 位。
如何通过以下two’s complement 方式将二进制值转换为整数:
"\x00\x00\x00" => 0x000000 (0)
"\x00\x00\x01" => 0x000001 (1)
"\x7F\xFF\xFF" => 0x7FFFFF (8388607)
"\xFF\xFF\xFF" => -0x000001 (-1)
"\x80\x00\x00" => -0x800000 (-8388608)
【问题讨论】:
标签: ruby endianness signed twos-complement 24-bit