Python 3 中的字节到 Int 的转换
Bytes to Int conversion in Python 3
我有一个名为 offset 的变量属于 <class 'bytes'>
。
我需要的是找出b/woffset和mapper[hash]的区别,这里mapper[hash]属于<class 'numpy.int64'>
.
我的功能如下:
for hash, sid, offset in x:
yield(sid, int(offset) - mapper[hash])
注意:在原始函数中,offset 没有类型转换为 int。我故意这样做是为了让他们与众不同 b/w。
但是这是抛出一个错误
ValueError: invalid literal for int() with base 10: b'\xf9\x01\x00\x00\x00\x00\x00\x00'
不足为奇,尽管在 调试时我打印了偏移量而不进行类型转换 并找到了 ->
的值
b'\xcb\x10\x00\x00\x00\x00\x00\x00'
b'B\x10\x00\x00\x00\x00\x00\x00'
b'T\x1c\x00\x00\x00\x00\x00\x00'
这个问题的可能解决方案是什么。
这些值看起来合理吗?
In [292]: alist = [b'\xcb\x10\x00\x00\x00\x00\x00\x00',
...: b'B\x10\x00\x00\x00\x00\x00\x00',
...: b'T\x1c\x00\x00\x00\x00\x00\x00']
In [293]: [np.frombuffer(astr,int) for astr in alist]
Out[293]: [array([4299]), array([4162]), array([7252])]
看起来每个字节串都是 8 个字节,因此可能是 int64
个对象的字节表示。
我有一个名为 offset 的变量属于 <class 'bytes'>
。
我需要的是找出b/woffset和mapper[hash]的区别,这里mapper[hash]属于<class 'numpy.int64'>
.
我的功能如下:
for hash, sid, offset in x:
yield(sid, int(offset) - mapper[hash])
注意:在原始函数中,offset 没有类型转换为 int。我故意这样做是为了让他们与众不同 b/w。
但是这是抛出一个错误
ValueError: invalid literal for int() with base 10: b'\xf9\x01\x00\x00\x00\x00\x00\x00'
不足为奇,尽管在 调试时我打印了偏移量而不进行类型转换 并找到了 ->
的值b'\xcb\x10\x00\x00\x00\x00\x00\x00'
b'B\x10\x00\x00\x00\x00\x00\x00'
b'T\x1c\x00\x00\x00\x00\x00\x00'
这个问题的可能解决方案是什么。
这些值看起来合理吗?
In [292]: alist = [b'\xcb\x10\x00\x00\x00\x00\x00\x00',
...: b'B\x10\x00\x00\x00\x00\x00\x00',
...: b'T\x1c\x00\x00\x00\x00\x00\x00']
In [293]: [np.frombuffer(astr,int) for astr in alist]
Out[293]: [array([4299]), array([4162]), array([7252])]
看起来每个字节串都是 8 个字节,因此可能是 int64
个对象的字节表示。