ヘッダー
Python サンプル集
 

数値をbytesにする

2022/11/6

→ C# のサンプルに切り替える → Visual Basic のサンプルに切り替える

 

数値 1234567 を b'\x87\xd6\x12\x00' にする。(リトルエンディアン)

number = 1234567 #16進数表記では 0x0012d687

if number >= 0:
    # 0x87, 0xd6, 0x12, 0x00 の4要素からなる bytearray になります。
    bins = number.to_bytes(4, 'little')
else:
    # マイナスの値の場合。
    # 符号用に1ビット必要なので正の値より必要なバイト数が多くなる場合があります。
    bins = number.to_bytes(4, 'little', signed=True)

#b'\x87\xd6\x12\x00' と出力されます。
print(bins)

メモ:4バイトで表現できない数値はエラーになります。その場合、to_bytesメソッドの第1引数で必要なバイト数(たとえば8)を指定すると成功します。4バイトで表現できる数値はプラスなら0~4294967295、マイナスも含めるなら-2147483648 ~ 2147483647です。

 

 

数値 1234567 を b'\x00\x12\xd6\x87' にする。(ビッグエンディアン)

number = 1234567 #16進数表記では 0x0012d687

if number >= 0:
    # 0x00, 0x12, 0xd6, 0x87 の4要素からなる bytearray になります。
    bins = number.to_bytes(4, 'big')
else:
    # マイナスの値の場合。
    # 符号用に1ビット必要なので正の値より必要なバイト数が多くなる場合があります。
    bins = number.to_bytes(4, 'big', signed=True)

#b'\x00\x12\xd6\x87' と出力されます。
print(bins)

メモ:4バイトで表現できない数値はエラーになります。その場合、to_bytesメソッドの第1引数で必要なバイト数(たとえば8)を指定すると成功します。4バイトで表現できる数値はプラスなら0~4294967295、マイナスも含めるなら-2147483648 ~ 2147483647です。

 

 

2バイトのbytearrayに変換する。

この例は 数値を要素数2のbytearrayに変換します。

number = 123 #16進数表記では 0x7b

if number >= 0:
    # 0x7B, 0x00 の2要素からなる bytearray になります。
    bins = number.to_bytes(2, 'little')
else:
    # マイナスの値の場合。
    # 符号用に1ビット必要なので正の値より必要なバイト数が多くなる場合があります。
    bins = number.to_bytes(2, 'little', signed=True)

#b'{\x00' と出力されます。 { は 7b という意味です。
print(bins)

メモ:2バイトで表現できない数値はエラーになります。その場合、to_bytesメソッドの第1引数で必要なバイト数(たとえば4)を指定すると成功します。2バイトで表現できる数値はプラスなら0~65535、マイナスも含めるなら-32768~32767です。

メモ:最後に出力されるb文字列では { は \x7b を表します。文字"{"のASCIIコードが 7b なので Python は \x7b と出力する代わりに { を使います。(とてもわかりにくいですね)