我正在尝试编写一个函数,该函数将.unpack('Q')(解包到 uint64_t)而无需访问解包方法。
当我手动从字符串转换为二进制到 uint64 时,我得到的结果与以下结果不同.unpack('Q'):
Integer('abcdefgh'.unpack('B*').first, 2) # => 7017280452245743464
'abcdefgh'.unpack('Q').first # => 7523094288207667809
Run Code Online (Sandbox Code Playgroud)
我不明白这里发生了什么事。
我也不明白为什么.unpack('Q')无论输入的大小如何,输出都是固定的。如果我在 'abcdefgh' 之后添加一千个字符,然后解压('Q')它,我仍然会得到[7523094288207667809]?