πΆ ΠΠ°ΠΊ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π±ΠΈΡΡ Π² ΡΠ°ΠΉΠ» python ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ ΠΌΡΠ·ΡΠΊΠ°Π»ΡΠ½ΡΠΉ ΡΠ΅Π΄Π΅Π²Ρ
Π§ΡΠΎΠ±Ρ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π±ΠΈΡΡ Π² ΡΠ°ΠΉΠ» Π² Python, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ bitstring. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ:
import bitstring
# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ Π±ΠΈΡΠΎΠ²
bit_string = bitstring.BitArray(bin='101010')
# ΠΡΠΊΡΡΡΠΈΠ΅ ΡΠ°ΠΉΠ»Π° Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ Π±ΠΈΡΠΎΠ²
with open('file.bin', 'wb') as file:
# ΠΠ°ΠΏΠΈΡΡ Π±ΠΈΡΠΎΠ² Π² ΡΠ°ΠΉΠ»
file.write(bit_string.tobytes())
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π±ΠΈΡΡ Π² ΡΠ°ΠΉΠ» Π² Python
ΠΠ°ΠΏΠΈΡΡ Π±ΠΈΡΠΎΠ²ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π² ΡΠ°ΠΉΠ» ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ , ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π² ΠΎΠ±Π»Π°ΡΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, Π°ΡΠ΄ΠΈΠΎ ΠΈΠ»ΠΈ Π²ΠΈΠ΄Π΅ΠΎ. Π Python Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π·Π°ΠΏΠΈΡΠΈ Π±ΠΈΡΠΎΠ² Π² ΡΠ°ΠΉΠ», ΠΈ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΈΡ Π½ΠΈΠΆΠ΅.
1. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ struct
ΠΠΎΠ΄ΡΠ»Ρ struct Π² Python ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ Π΄Π°Π½Π½ΡΡ Π² Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ Π²ΠΈΠ΄ ΠΈ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ Π΄Π°Π½Π½ΡΡ ΠΈΠ· Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°ΡΠ°. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΠΌΠΎΠ΄ΡΠ»Ρ Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ Π±ΠΈΡΠΎΠ² Π² ΡΠ°ΠΉΠ».
import struct
# ΠΡΠΊΡΡΠ²Π°Π΅ΠΌ ΡΠ°ΠΉΠ» Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ Π±ΠΈΠ½Π°ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ
file = open("file.bin", "wb")
# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΊΠΎΡΡΠ΅ΠΆ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ
values = (10, 20, 30, 40)
# ΠΠ°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΡΠ°ΠΉΠ»
file.write(struct.pack('4i', *values))
# ΠΠ°ΠΊΡΡΠ²Π°Π΅ΠΌ ΡΠ°ΠΉΠ»
file.close()
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΎΡΠΊΡΡΠ²Π°Π΅ΠΌ ΡΠ°ΠΉΠ» "file.bin" Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ Π±ΠΈΠ½Π°ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ ('wb') ΠΈ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΊΠΎΡΡΠ΅ΠΆ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ struct.pack()
, ΡΡΠΎΠ±Ρ ΡΠΏΠ°ΠΊΠΎΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΡΠΎΡΠΌΠ°Ρ ΠΈ Π·Π°ΠΏΠΈΡΠ°ΡΡ ΠΈΡ
Π² ΡΠ°ΠΉΠ». ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΌΡ Π·Π°ΠΊΡΡΠ²Π°Π΅ΠΌ ΡΠ°ΠΉΠ».
2. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ bitarray
ΠΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΡΠΏΠΎΡΠΎΠ± Π·Π°ΠΏΠΈΡΠΈ Π±ΠΈΡΠΎΠ² Π² ΡΠ°ΠΉΠ» Π² Python - ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ bitarray. ΠΡΠΎΡ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ΄ΠΎΠ±Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π±ΠΈΡΠ°ΠΌΠΈ ΠΈ Π±ΠΈΡΠΎΠ²ΡΠΌΠΈ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ.
from bitarray import bitarray
# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π±ΠΈΡΠΎΠ²ΡΠΉ ΠΌΠ°ΡΡΠΈΠ²
bits = bitarray()
# ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π±ΠΈΡΡ Π² ΠΌΠ°ΡΡΠΈΠ²
bits.append(True)
bits.append(False)
bits.append(True)
bits.append(True)
# ΠΠ°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ Π±ΠΈΡΡ Π² ΡΠ°ΠΉΠ»
with open("file.bin", "wb") as file:
bits.tofile(file)
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ Π±ΠΈΡΠΎΠ²ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ bitarray()
ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π² Π½Π΅Π³ΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠ΅ Π±ΠΈΡΡ. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΠΎΡΠΊΡΡΠ²Π°Π΅ΠΌ ΡΠ°ΠΉΠ» "file.bin" Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ Π±ΠΈΠ½Π°ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° with
ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ Π±ΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° tofile()
.
3. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ numpy
ΠΡΠ»ΠΈ Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ ΡΠΈΡΠ΅Π» ΠΈΠ»ΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ, Π²Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ numpy Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ Π±ΠΈΡΠΎΠ² Π² ΡΠ°ΠΉΠ».
import numpy as np
# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΌΠ°ΡΡΠΈΠ² Π±ΠΈΡΠΎΠ²
bits = np.array([1, 0, 1, 1], dtype=np.uint8)
# ΠΠ°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΠΌΠ°ΡΡΠΈΠ² Π² ΡΠ°ΠΉΠ»
with open("file.bin", "wb") as file:
bits.tofile(file)
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΌΠ°ΡΡΠΈΠ² Π±ΠΈΡΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ numpy ΠΈ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ
ΠΊΠ°ΠΊ np.uint8
Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π±ΠΈΡΠ°. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΠΎΡΠΊΡΡΠ²Π°Π΅ΠΌ ΡΠ°ΠΉΠ» "file.bin" Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ Π±ΠΈΠ½Π°ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° with
ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΠΌΠ°ΡΡΠΈΠ² Π±ΠΈΡΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° tofile()
.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ ΡΡΠΈ ΡΠΏΠΎΡΠΎΠ±Π° Π·Π°ΠΏΠΈΡΠΈ Π±ΠΈΡΠΎΠ² Π² ΡΠ°ΠΉΠ» Π² Python. ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ struct, bitarray ΠΈ numpy Π΄Π»Ρ ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ ΠΈ Π·Π°ΠΏΠΈΡΠΈ Π±ΠΈΡΠΎΠ². ΠΡΠ±ΠΎΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠΏΠΎΡΠΎΠ±Π° Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π²Π°ΡΠ΅ΠΉ Π·Π°Π΄Π°ΡΠΈ ΠΈ ΡΠΈΠΏΠ° Π΄Π°Π½Π½ΡΡ , Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅.
Π£ΡΠΈΡΡΠ²Π°ΠΉΡΠ΅, ΡΡΠΎ ΠΏΡΠΈ Π·Π°ΠΏΠΈΡΠΈ Π±ΠΈΡΠΎΠ² Π² ΡΠ°ΠΉΠ» ΠΈΠ»ΠΈ ΡΡΠ΅Π½ΠΈΠΈ Π±ΠΈΡΠΎΠ² ΠΈΠ· ΡΠ°ΠΉΠ»Π° Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π±Π°ΠΉΡΠΎΠ². ΠΠ΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π·Π°ΠΏΠΈΡΡ Π±ΠΈΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌ ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌ. ΠΡΠ΄ΡΡΠ΅ ΠΎΡΡΠΎΡΠΎΠΆΠ½Ρ ΠΈ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½Ρ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π±ΠΈΡΠΎΠ²ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ Π² Python.