Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当n超过256时,chr(n)失败_Python_Max_Chr - Fatal编程技术网

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

Python 当n超过256时,chr(n)失败,python,max,chr,Python,Max,Chr,我正在使用chr和int将二进制表示字符串转换为实际二进制值 我所做的是 n=int('0101011',2) binary=chr(n) 然后,binary是表示字符串的实际二进制值 但是,如果我给int的字符串大于十进制的256怎么办 有解决办法吗 PS: 我使用chr的原因是我想将n转换为字符串,以便使用f.write()将其写入文件 这个问题源于,被定义为对ASCII字符进行操作,其值必须小于256。如果您需要Unicode字符,可以改用。定义为对ASCII字符进行操作,其

我正在使用
chr
int
将二进制表示字符串转换为实际二进制值

我所做的是

   n=int('0101011',2)
   binary=chr(n)
然后,
binary
是表示字符串的实际二进制值

但是,如果我给int的字符串大于十进制的256怎么办

有解决办法吗

PS: 我使用chr的原因是我想将
n
转换为字符串,以便使用
f.write()
将其写入文件


这个问题源于,被定义为对ASCII字符进行操作,其值必须小于256。如果您需要Unicode字符,可以改用。

定义为对ASCII字符进行操作,其值必须小于256。如果您希望使用Unicode字符,可以改用。

如果我理解您的问题,您希望将二进制字符串转换为整数值。这就是您在第一行代码中所做的。第二行只是将整数值转换为ASCII表中该值表示的字符。因此,例如,如果字符串为0110001,则在第一步中将转换为int值97。然后,第二步将97转换为ASCII字符“a”。如果随后尝试将此变量用作数字,它将转换回ing值97。所以,如果我理解了你的问题,那么在第1步之后,你实际上得到了你想要的数字。

如果我理解了你的问题,你想要将二进制字符串转换成整数值。这就是您在第一行代码中所做的。第二行只是将整数值转换为ASCII表中该值表示的字符。因此,例如,如果字符串为0110001,则在第一步中将转换为int值97。然后,第二步将97转换为ASCII字符“a”。如果随后尝试将此变量用作数字,它将转换回ing值97。因此,如果我理解了你的问题,那么在第1步之后,你实际上已经有了你想要的数字。

你可以在给
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()
将返回的值写入文件。在将二进制数据读取或写入文件时,在
打开()文件时,应在
模式
参数值后附加“b”。

可以在提供给
包()的格式字符串中使用不同的格式字符
方法,以轻松获取长度为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()
文件时,应将“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)
n=int('0001f600',16) >>>联合国人权中心(北) 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 ValueError:unichr()参数不在范围内(0x10000)(狭窄的Python构建)
请注意错误中的
窄Python构建
消息,这意味着Python构建时不支持宽unicode字符,但即使窄Python也可以绕过此限制(无需使用
--enable unicode=ucs4
标志重新编译):

n=int('0001f600',16) >>>s='\\U{:0>8X}'。格式(n) >>> “\\U0001F600” >>>binary=s.decode('unicode-escape') >>>打印(二进制)
在尝试转换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)
n=int('0001f600',16) >>>联合国人权中心(北) 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 ValueError:unichr()参数不在范围内(0x10000)(狭窄的Python构建) 请注意错误中的
窄Python构建
消息,这意味着Python构建时不支持宽unicode字符,但即使窄Python也可以绕过此限制(无需使用
--enable unicode=ucs4
标志重新编译):

n=int('0001f600',16) >>>s='\\U{:0>8X}'。格式(n) >>> “\\U0001F600” >>>binary=s.decode('unicode-escape') >>>打印(二进制)
我认为这不是他的目标。他想取
01000001
,将than转换为
65
,然后将其转换为
a
,并将其写入文件。@Anolith,是的,dlev是正确的。最终目标是将其写入文件。所以我的路线图是1,将字符串转换为int,2,int转换为字符串,这样就可以将其写入文件,3,写入文件我不认为这是他的目标。他想取
01000001
,将than转换为
65
,然后将其转换为
a
,并将其写入文件。@Anolith,是的,dlev是正确的。最终目标是将其写入文件。所以我的路线图是1,将字符串转换为int,2,int转换为字符串,这样它可以写入文件,3,写入文件如果值大于256,将返回mod 256。如果值大于256,将返回mod 256。