我的代码:

big_int = 536870912
f = open('sample.txt', 'wb')

for item in range(0, 10):
   y = bytearray.fromhex('{:0192x}'.format(big_int))
   f.write("%s" %y)
f.close()


我想将long int转换为字节。但是我正在得到TypeError: 'str' does not support the buffer interface

最佳答案

在Python 3中,字符串是隐式的Unicode,因此会与特定的二进制表示形式分离(取决于所使用的编码)。因此,字符串"%s" % y不能写入以二进制模式打开的文件。

相反,您可以直接将y写入文件:

y = bytearray.fromhex('{:0192x}'.format(big_int))
f.write(y)


而且,您的代码("%s" % y)实际上会创建一个Unicode字符串,其中包含y(即str(y))的字符串表示形式,这与您想像的不一样。例如:

>>> '%s' % bytearray()
"bytearray(b'')"

关于python - 如何解决TypeError:'str'不支持缓冲区接口(interface)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40022354/

10-12 22:53