2024-09-26 22:13:33 发布
网友
我有一个二进制文件,我知道前3个字节应该是0x6c、0x1b和0x01,按顺序排列。 我使用python和R加载文件
Python: f = open('pathToFile', 'rb') f.read(3) 我得到:out[2] b'l\x1b\x01'
f = open('pathToFile', 'rb') f.read(3)
out[2] b'l\x1b\x01'
在R时: readBin('pathToFile', what='raw', n=3) 我得到[1] 6c 1b 01
readBin('pathToFile', what='raw', n=3)
[1] 6c 1b 01
我不理解python输出中的b'l',因为我期望6c(如R输出所示)
b'l'
6c
我做错什么了
所以二进制值就是数字。使用list(f.read(3))在python中查看。默认情况下,R和Python只使用两种不同的表示。R使用hexadecimal,Python使用ASCII(对于非ascii值,\xhh)。造成这种差异的原因是Python是一种通用语言,许多(通常是旧的,但也不是)终端和程序使用7位ascii来显示输出。R忽略了这个用法,因为它通常只对原始数据感兴趣
list(f.read(3))
\xhh
要获得python中的十六进制表示,请使用这个bytes子类
bytes
class BytesHex(bytes): def __repr__(self): return ' '.join('{:0>2x}'.format(b) for b in self) BytesHex(b'l\x1b\x01') Out[158]: 6c 1b 01
所以二进制值就是数字。使用
list(f.read(3))
在python中查看。默认情况下,R和Python只使用两种不同的表示。R使用hexadecimal,Python使用ASCII(对于非ascii值,\xhh
)。造成这种差异的原因是Python是一种通用语言,许多(通常是旧的,但也不是)终端和程序使用7位ascii来显示输出。R忽略了这个用法,因为它通常只对原始数据感兴趣要获得python中的十六进制表示,请使用这个
bytes
子类相关问题 更多 >
编程相关推荐