如何在Python中将字符映射到整数范围[-128,127]?
问题描述:
我想转换一个字符列表(以单个字节表示,即范围[0,255]),用[-128,127]范围内的整数表示。我读过Python的模运算符(%
)总是返回一个与分母符号相同的数字。如何在Python中将字符映射到整数范围[-128,127]?
在Python中做这种转换的正确方法是什么?
EDIT 字符映射到[128255]与ord
应该被重新映射到[-128,-1],以128映射到在-128和255映射到-1。 (对于转换的反面,我使用chr(my_int%256)
,但my_int
可以是负数。)
答
我想知道“字符列表”是什么意思,它们是数字吗?如果是这样,我认为x % 256 - 128
或x % -256 + 128
应该工作。
答
不知道我是否理解了这个问题......你想要做那样的事情吗?
[i - 255 if i > 127 else i for i in [ord(l) for l in "azertyuiopqsdféhjklm3{"]]
答
def to_ints(input):
return [o if o <= 128 else 255 - o for o in [ord(char) in input]]
def to_str(input):
return "".join([chr(i%256) for i in input])
out = to_ints("This is a test")
print to_str(out)
我想我们需要更多的信息了解你想要做什么。什么是你的输入字符集?总共有256个字符?他们有连续的序号? – sberry 2013-03-11 08:59:32
@sberry我编辑了我的问题,以更好地反映我的意思。 – n611x007 2013-03-11 09:09:34
何时输出数字是正数? – christophe31 2013-03-11 09:12:38