gpt4 book ai didi

python pack 4 byte integer with bytearray struct.pack中的字节

转载 作者:行者123 更新时间:2023-12-04 17:07:04 27 4
gpt4 key购买 nike

我正在尝试使用 struct.pack 将 python 字节数组的内容打包成一个 4 字节有符号整数。不幸的是,pack 需要一个字符串,所以在谷歌搜索后我认为我需要将我的 bytearray 解码为一个字符串。我认为 ascii 的意思是因为 ascii 字符是一个字节长。不幸的是,ascii 不想支持我的值 > 127,所以我想我会使用替换...

但是当我这样做时,解码返回一个 unicode 类型的对象,现在我的每个字节都是一个 4 字符的字符串...

这看起来有点荒谬,我遗漏了一些明显的东西(ps 我已经使用 python 大约两周了)

这是我正在尝试做的...

    val = long(-5) 
s = bytearray(pack("<i", val))

s.pop() # pop off msb

# write it out the way we want to then read it in the way the code does
fout = open("test.bat", "wb")
fout.write(s)
fout.close()

fin = open("test.bat", "rb")

inBytes = bytearray(fin.read(3))
# extend sign bit
if (inBytes[2] & 0x80):
inBytes.append(0xff)
else:
inBytes.append(0x00)

nb = inBytes.decode('ascii', 'replace')
# ERROR:root:after decode, len: 4 type: <type 'unicode'>
logging.error("after decode, len: {0} type: {1}".format(len(nb), type(nb)))

# struct.error: unpack requires a string argument of length 4
inInt32 = unpack('<i', inBytes.decode('ascii', 'replace'))[0]

fin.close()

最佳答案

您只需将 inBytes 转换回 str:

>>> inint = struct.unpack('<i', str(inBytes))
>>> inint
(-5,)

关于python pack 4 byte integer with bytearray struct.pack中的字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6076300/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com