私は現在、暗号化/復号化プログラムに取り組んでおり、バイトを整数に変換できる必要があります。そんなこと知ってる:
bytes([3]) = b'\x03'
しかし、私は逆を行う方法を見つけることができません。私はひどく間違っていますか?
少なくとも3.2を使用していると仮定すると、 このために組み込まれています があります
int.from_bytes(bytes、byteorder、*、signed = False)
...
引数bytesは、バイトのようなオブジェクトか、反復可能な生成バイトのいずれかでなければなりません。
Byteorder引数は、整数を表すために使用されるバイト順序を決定します。バイトオーダーが「大きい」場合、最上位バイトはバイト配列の先頭にあります。バイトオーダーが「小さい」場合、最上位バイトはバイト配列の最後にあります。ホストシステムのネイティブバイトオーダーを要求するには、バイトオーダー値としてsys.byteorderを使用します。
符号付き引数は、2の補数を使用して整数を表すかどうかを示します。
## Examples:
int.from_bytes(b'\x00\x01', "big") # 1
int.from_bytes(b'\x00\x01', "little") # 256
int.from_bytes(b'\x00\x10', byteorder='little') # 4096
int.from_bytes(b'\xfc\x00', byteorder='big', signed=True) #-1024
int.from_bytes( bytes, byteorder, *, signed=False )
このウェブサイトの機能を使用した場合、うまく機能しません。
https://coderwall.com/p/x6xtxq/convert-bytes-to-int-or-int-to-bytes-in-python
def bytes_to_int(bytes):
result = 0
for b in bytes:
result = result * 256 + int(b)
return result
def int_to_bytes(value, length):
result = []
for i in range(0, length):
result.append(value >> (i * 8) & 0xff)
result.reverse()
return result