Convertir une chaîne hexadécimale en binaire et écrire dans un fichier binaire
** [Méthode 1] Utilisez to_bytes () ** Parce que vous voudrez peut-être changer l'endian Exécutez dans l'ordre chaîne de caractères → int → octets (binaire).
str_to_bin.py
moji = '01020304'
suuchi = int(moji,16)
bytes_big = suuchi.to_bytes(4, byteorder='big')
bytes_little = suuchi.to_bytes(4, byteorder='little')
print(bytes_big)
print(bytes_little)
wf = open('write_test.bin', 'wb')
wf.write(bytes_big)
wf.write(bytes_little)
** résultat d'impression **
16909060
b'\x01\x02\x03\x04'
b'\x04\x03\x02\x01'
** [Méthode 2] ** Exécutez dans l'ordre chaîne de caractères → int → octets (binaire). Puisque to_bytes () ne peut être utilisé qu'avec python3, utilisez struct.
str_to_bin_2.py
import struct
moji = '01020304'
suuchi = int(moji,16)
bytes_big =struct.pack(">L",suuchi)
bytes_little =struct.pack("<L",suuchi)
** [Méthode 3] ** Si vous ne souhaitez pas convertir en endian, vous pouvez convertir une chaîne de caractères en octets (binaire) ci-dessous.
str_to_bin_3.py
moji = '01020304'
moji_bin = binascii.unhexlify(moji)
Lien de référence ci-dessous
[Gestion des nombres hexadécimaux en Python](http://kaworu.jpn.org/python/Python%E3%81%A716%E9%80%B2%E6%95%B0%E3%82%92%E6%89 % B1% E3% 81% 86) Python | 2 complément (signé) int ⇔ octets ⇔ str (chaîne de caractères hexagonaux) Numérique-> Binaire-> Chaîne hexagonale-> Binaire-> Convertir en numérique en Python.
[7.1. Struct - Interpréter une chaîne d'octets comme des données binaires compactées] (https://docs.python.jp/3/library/struct.html) 19.8. Binascii - Conversion entre données binaires et données ASCII
Recommended Posts