私は次のような文字列を取得しました:
s = "\0x01\0x02\0x01\0x11"
そして、その文字列の平均数を取得したいと思います。私はこれを試しました:
sum = 0
for d in s:
sum += int(d)
しかし、「基数10のint()の無効なリテラル:'\x08'」と書かれています:-(
私は次のような文字列を取得しました:
s = "\0x01\0x02\0x01\0x11"
そして、その文字列の平均数を取得したいと思います。私はこれを試しました:
sum = 0
for d in s:
sum += int(d)
しかし、「基数10のint()の無効なリテラル:'\x08'」と書かれています:-(
structモジュールをお勧めします。
>>> import struct
>>> s = '\x01\x02\x01\x11'
>>> struct.unpack('=4B', s)
(1, 2, 1, 17)
Pythonint()
関数を使用できます。最初の引数は文字列で、2 番目の引数は基数です。
投稿したものが16進数のように見えるため、基数を確認する必要があります(0x0は通常16進数を示し、さらに02は有効な2進数ではありません)。
バイナリ (基数 2) の場合:
num = int("0x11", 2); # num will be 3
16 進数 (基数 16) の場合:
num = int("0x0A", 16); # num will be 10
文字列 ("\0x01\0x02\0x01\0x11") を変換するには:
numbers = [int(s, base) for s in "\\0x01\\0x02\\0x01\\0x11".split("\\") if len(s)]
で実行するとbase = 16
、次のように出力されます。numbers = [1, 2, 1, 17]
次に、次を使用して平均を見つけることができます。
average = sum(numbers)/len(numbers)
ord()
will は、長さ 1 の文字列が与えられると、その文字列の文字のコード ポイントを示します。コードの代わりにこれを使用できるはずですint()
。コードは次のようになります。
sum = 0
for d in s:
sum += ord(d)