当n超过256时,chr(n)失败
我正在使用chr
和int
将二进制表示字符串转换为实数二进制值。当n超过256时,chr(n)失败
我所做的是
n=int('0101011',2)
binary=chr(n)
然后binary
是表示字符串的实际二进制值。
但是如果我给int的字符串在十进制中大于256会怎样?
任何解决方案?
PS: 我用CHR是我想n
转换为字符串,这样我可以用它f.write()
写入文件,究其原因。
而这个问题是从this question
如果我理解你的问题,你想将二进制字符串转换为整数值。这就是你在第一行代码中所做的。第二行只是将一个整数值转换为ASCII表中由该值表示的字符。因此,例如,如果字符串是01100001,那么在第一步中将转换为97的int值。第二步然后将97转换为ASCII字符'a'。如果您尝试将此变量作为数字使用,它将被转换回为97的值。因此,如果我理解了您的问题,则在步骤1之后实际上已经有了您想要的数字。
我不认为这就是他的目标。他想采用'01000001',转换为'65',然后将其转换为'a',并将其写入文件。 – dlev
@Anulith,是的,dlev是对的。最终目标是将其写入文件。所以我的路线图是** 1 **,将字符串转换为int,** 2 **,int转换为字符串,以便将其写入文件,** 3 **,写入文件 – xiaohan2012
您可以使用不同的格式字符在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()
将返回的值写入文件。当读取或写入二进制数据到文件时,当您的文件为open()
时,应该在参数值mode
后附加'b'。
当试图转换unicode值时,可能会遇到许多问题。因此,使用unichr
并不总是可能要么,例如:
>>> n = int('0001f600', 16)
>>> unichr(n)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: unichr() arg not in range(0x10000) (narrow Python build)
请注意,在错误narrow Python build
消息,这意味着Python中建没有广泛支持Unicode字符,但即使是狭窄的Python可以绕过这个限制(无需与--enable-unicode=ucs4
标志重新编译):
>>> n = int('0001f600', 16)
>>> s = '\\U{:0>8X}'.format(n)
>>> s
'\\U0001F600'
>>> binary = s.decode('unicode-escape')
>>> print(binary)
如果该值大于256,将返回mod 256。 – dayuloli