当n超过256时chr(n)失败

1 投票
4 回答
3012 浏览
提问于 2025-04-17 00:26

我正在使用 chrint 来把一个二进制表示的字符串转换成真正的二进制值。

我做的步骤是:

   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() 这个函数。

撰写回答