0

文字のリスト (1 バイト、つまり [0, 255] の範囲で表される) を [-128,127] の範囲の整数で表されるように変換したいと思います。Python の剰余演算子 ( %) は常に分母と同じ符号の数値を返すことを読みました。

Pythonでこの変換を行う正しい方法は何ですか?

[128,255] にマップされるEDITord文字は[-128,-1] に再マップされ、128 は -128 にマップされ、255 は -1 にマップされます。(私が使用する変換の逆数ですが、負の数になる可能性があります。chr(my_int%256))my_int

4

5 に答える 5

5

structモジュールを使用して「 unpack ing from byte」でこの変換を実行できることがわかりました。

# gotcha|pitfall: my original idea, but this generates a list of 1-tuples:
# x = [struct.unpack("b",a) for a in charlist]

fmt = "%ib"%len(charlist) # eg. "5b", if charlist's length is 5
x = struct.unpack(fmt,charlist) # tuple of ints
于 2013-03-11T09:19:01.753 に答える
2

私が質問を理解したかどうかわからない... あなたはそのようなことをしたいですか?

[i - 255 if i > 127 else i for i in [ord(l) for l in "azertyuiopqsdféhjklm3{"]]
于 2013-03-11T09:02:25.630 に答える
1
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)
于 2013-03-11T09:02:49.513 に答える
0

「文字のリスト」とは何を意味するのだろうか、それは数字ですか?もしそうなら、私は働くべきだと思いx % 256 - 128ますx % -256 + 128

于 2013-03-11T09:02:11.017 に答える