当n超过256时chr(n)失败
我正在使用 chr
和 int
来把一个二进制表示的字符串转换成真正的二进制值。
我做的步骤是:
n=int('0101011',2)
binary=chr(n)
这样 binary
就是这个表示字符串的真实二进制值了。
但是,如果我给 int
的字符串在十进制下大于256怎么办呢?
有没有什么解决办法?
PS:我使用 chr
的原因是我想把 n
转换成字符串,这样我就可以用 f.write()
把它写入文件。
这个问题源自于 这个链接
4 个回答
0
如果我理解你的问题,你想把一个二进制字符串转换成整数值。这就是你在代码的第一行所做的事情。第二行则是把这个整数值转换成在ASCII表中对应的字符。举个例子,如果这个字符串是01100001,第一步会把它转换成整数值97。然后第二步会把97转换成ASCII字符'a'。如果你之后把这个变量当作数字使用,它会再转换回整数值97。所以,如果我理解你的问题,其实在第一步之后你就得到了你想要的数字。
1
你可以在struct
模块的pack()
方法中使用不同的格式字符,这样就能轻松得到1到8字节的有符号或无符号整数的二进制表示字符串。
>>> from struct import pack
>>> pack('B', 255)
'\xff'
>>> pack('H', 257)
'\x01\x01'
>>> pack('Q', 9223372036854775807)
'\xff\xff\xff\xff\xff\xff\xff\x7f'
如果需要,返回的值可以用f.write()
写入文件。当你要读取或写入二进制数据到文件时,打开文件时应该在mode
参数值后面加上'b'。
8
chr()
这个函数是用来处理 ASCII 字符的,它的值必须小于 256。如果你想处理 Unicode 字符,可以使用 unichr()
这个函数。