我的代码:
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/