我知道以前有人问过这个问题,其中一些建议似乎是关于需要一个b来使字符串变为字节文字。但是,im将十六进制代码作为0x414243传递给函数,以将其另存为ABC。在
def _pack(_data, size):
numofbytes = size/8
print("Chars Expected: " + str(numofbytes))
formatString = "{}s".format(int(numofbytes))
print("Formatted String:" + formatString)
struct.pack(formatString,_data)
_pack(0x414243,24)
我不确定要更改什么,我想知道这是否是我如何使用formatstring变量的问题。我希望函数能够从大小计算出传递的数据中有多少个字符,在这种情况下,24位=3字节,因此它格式化3s并传递0x414243来转换成ABC。在
有谁能告诉我如何克服错误吗。在
正如错误消息所说,
struct.pack()
需要一组字节,而您给它一个整数。在如果希望能够将数据作为整数传入,请在打包之前将其转换为字节:
或者在调用数据时将其作为字节传入:
^{pr2}$如果有一个包含十六进制的字符串,例如
"0x414243"
,则可以将其转换为整数,然后再转换为字节:您可以使用
isinstance()
允许函数接受以下任何格式:顺便说一下,如果
size
不是8的倍数,那么对字节数的计算将产生一个浮点答案。字节的小数是错误的。要解决这个问题:如果还有剩余的位,
+ bool(size % 8)
位将在整数除法的结果上加一。在相关问题 更多 >
编程相关推荐