Apakah biner adalah string dalam python?

Dimulai dengan Python 3. 6, Anda dapat menggunakan f-string. Ini dapat dilakukan dengan mengawali string literal dengan f atau F. Begini tampilan kodenya

1

2

3

4

5

6

7

jika __nama__ == '__main__'.

 

    x = 100

 

    biner = f'{x. 08b}'

    cetak(biner)    # 01100100

 

Unduh  Jalankan Kode

3. Menggunakan format() fungsi bawaan

Pilihan lainnya adalah menggunakan fungsi bawaan format(value[, format_spec]) yang mengubah value yang ditentukan menjadi string yang diformat sesuai dengan spesifikasi pemformatan format_spec. Berikut adalah contoh penggunaannya

1

2

3

4

5

6

7

jika __nama__ == '__main__'.

 

    x = 100

 

    biner = format(x, "08b")

    cetak(biner)    # 01100100

 

Unduh  Jalankan Kode

4. Menggunakan bin() fungsi bawaan

Terakhir, Anda dapat menggunakan fungsi bawaan bin(), yang mengubah bilangan bulat menjadi string biner yang diawali dengan b1. Anda dapat menggunakan slicing untuk menghilangkan awalan, seperti yang ditunjukkan di bawah ini

Jenis byte di Python tidak dapat diubah dan menyimpan urutan nilai mulai dari 0-255 (8-bit). Anda bisa mendapatkan nilai satu byte dengan menggunakan indeks seperti array, tetapi nilainya tidak dapat diubah

# Create empty bytes
empty_bytes = bytes(4)
print(type(empty_bytes))
print(empty_bytes)

Tipe Bytearray

Untuk membuat objek yang bisa berubah, Anda perlu menggunakan tipe bytearray. Dengan bytearray Anda dapat melakukan semua yang Anda bisa dengan perubahan lain seperti push, pop, insert, append, delete, dan sort

# Cast bytes to bytearray
mutable_bytes = bytearray(b'\x00\x0F')

# Bytearray allows modification
mutable_bytes[0] = 255
mutable_bytes.append(255)
print(mutable_bytes)

# Cast bytearray back to bytes
immutable_bytes = bytes(mutable_bytes)
print(immutable_bytes)
_

Kelas BytesIO

Mewarisi dari io. Kelas BufferedReader hadir dengan fungsi seperti read(), write(), peek(), getvalue(). Ini adalah buffer byte umum yang dapat Anda kerjakan

binary_stream = io.BytesIO()
# Binary data and strings are different types, so a str
# must be encoded to binary using ascii, utf-8, or other.
binary_stream.write("Hello, world!\n".encode('ascii'))
binary_stream.write("Hello, world!\n".encode('utf-8'))

# Move cursor back to the beginning of the buffer
binary_stream.seek(0)

# Read all data from the buffer
stream_data = binary_stream.read()

# The stream_data is type 'bytes', immutable
print(type(stream_data))
print(stream_data)

# To modify the actual contents of the existing buffer
# use getbuffer() to get an object you can modify.
# Modifying this object updates the underlying BytesIO buffer
mutable_buffer = binary_stream.getbuffer()
print(type(mutable_buffer))  # class 'memoryview'
mutable_buffer[0] = 0xFF

# Re-read the original stream. Contents will be modified
# because we modified the mutable buffer
binary_stream.seek(0)
print(binary_stream.read())
# Pass "wb" to write a new file, or "ab" to append
with open("test.txt", "wb") as binary_file:
    # Write text or bytes to the file
    binary_file.write("Write text by encoding\n".encode('utf8'))
    num_bytes_written = binary_file.write(b'\xDE\xAD\xBE\xEF')
    print("Wrote %d bytes." % num_bytes_written)

Alternatifnya, Anda dapat secara eksplisit memanggil buka dan tutup, tetapi jika Anda melakukannya dengan cara ini, Anda perlu menangani kesalahan sendiri dan memastikan file selalu ditutup, bahkan jika ada kesalahan saat menulis. Saya tidak merekomendasikan metode ini kecuali Anda memiliki alasan yang kuat

binary_file = open("test.txt", "wb")
binary_file.write(b'\x00')
binary_file.close()
_

Membaca Byte Dari File

with open("test_file.dat", "rb") as binary_file:
    # Read the whole file at once
    data = binary_file.read()
    print(data)

Baca file baris demi baris

Jika Anda mengerjakan file teks, Anda dapat membaca data baris demi baris

with open("test.txt", "rb") as text_file:
    # One option is to call readline() explicitly
    # single_line = text_file.readline()

    # It is easier to use a for loop to iterate each line
    for line in text_file:
        print(line)
_

Mendapatkan ukuran file

import os
file_length_in_bytes = os.path.getsize("test.txt")
print(file_length_in_bytes)

Mencari posisi tertentu dalam file

Anda dapat berpindah ke posisi tertentu dalam file sebelum membaca atau menulis menggunakan seek(). Anda dapat meneruskan satu parameter ke seek() dan itu akan pindah ke posisi itu, relatif terhadap awal file

# Seek can be called one of two ways:
#   x.seek(offset)
#   x.seek(offset, starting_point)

# starting_point can be 0, 1, or 2
# 0 - Default. Offset relative to beginning of file
# 1 - Start from the current position in the file
# 2 - Start from the end of a file (will require a negative offset)

with open("test_file.dat", "rb") as binary_file:
    # Seek a specific position in the file and read N bytes
    binary_file.seek(0, 0)  # Go to beginning of the file
    couple_bytes = binary_file.read(2)
    print(couple_bytes)
_

Integer ke Byte

i = 16

# Create one byte from the integer 16
single_byte = i.to_bytes(1, byteorder='big', signed=True)
print(single_byte)

# Create four bytes from the integer
four_bytes = i.to_bytes(4, byteorder='big', signed=True)
print(four_bytes)

# Compare the difference to little endian
print(i.to_bytes(4, byteorder='little', signed=True))

# Create bytes from a list of integers with values from 0-255
bytes_from_list = bytes([255, 254, 253, 252])
print(bytes_from_list)

# Create a byte from a base 2 integer
one_byte = int('11110000', 2)
print(one_byte)

# Print out binary string (e.g. 0b010010)
print(bin(22))
_

Byte ke Integer

# Cast bytes to bytearray
mutable_bytes = bytearray(b'\x00\x0F')

# Bytearray allows modification
mutable_bytes[0] = 255
mutable_bytes.append(255)
print(mutable_bytes)

# Cast bytearray back to bytes
immutable_bytes = bytes(mutable_bytes)
print(immutable_bytes)
_0

Pengodean Teks

# Cast bytes to bytearray
mutable_bytes = bytearray(b'\x00\x0F')

# Bytearray allows modification
mutable_bytes[0] = 255
mutable_bytes.append(255)
print(mutable_bytes)

# Cast bytearray back to bytes
immutable_bytes = bytes(mutable_bytes)
print(immutable_bytes)
1
# Cast bytes to bytearray
mutable_bytes = bytearray(b'\x00\x0F')

# Bytearray allows modification
mutable_bytes[0] = 255
mutable_bytes.append(255)
print(mutable_bytes)

# Cast bytearray back to bytes
immutable_bytes = bytes(mutable_bytes)
print(immutable_bytes)
2

Pengkodean Basis 64

# Cast bytes to bytearray
mutable_bytes = bytearray(b'\x00\x0F')

# Bytearray allows modification
mutable_bytes[0] = 255
mutable_bytes.append(255)
print(mutable_bytes)

# Cast bytearray back to bytes
immutable_bytes = bytes(mutable_bytes)
print(immutable_bytes)
_3

Heksadesimal

# Cast bytes to bytearray
mutable_bytes = bytearray(b'\x00\x0F')

# Bytearray allows modification
mutable_bytes[0] = 255
mutable_bytes.append(255)
print(mutable_bytes)

# Cast bytearray back to bytes
immutable_bytes = bytes(mutable_bytes)
print(immutable_bytes)
_4

Memformat String

String format dapat berguna untuk memvisualisasikan atau menampilkan nilai byte. String format membutuhkan nilai integer sehingga byte harus dikonversi menjadi integer terlebih dahulu

# Cast bytes to bytearray
mutable_bytes = bytearray(b'\x00\x0F')

# Bytearray allows modification
mutable_bytes[0] = 255
mutable_bytes.append(255)
print(mutable_bytes)

# Cast bytearray back to bytes
immutable_bytes = bytes(mutable_bytes)
print(immutable_bytes)
_5

Operasi Bitwise

# Cast bytes to bytearray
mutable_bytes = bytearray(b'\x00\x0F')

# Bytearray allows modification
mutable_bytes[0] = 255
mutable_bytes.append(255)
print(mutable_bytes)

# Cast bytearray back to bytes
immutable_bytes = bytes(mutable_bytes)
print(immutable_bytes)
_6

Pengepakan dan Pembongkaran Struktur

Pengemasan dan pembongkaran memerlukan string yang menentukan bagaimana struktur data biner. Perlu mengetahui byte mana yang mewakili nilai. Perlu diketahui apakah seluruh rangkaian byte mewakili karakter atau jika itu adalah urutan bilangan bulat 4-byte. Itu dapat disusun dalam berbagai cara. String format bisa sederhana atau kompleks. Dalam contoh ini saya mengemas satu bilangan bulat empat byte diikuti oleh dua karakter. Huruf i dan c mewakili bilangan bulat dan karakter

# Cast bytes to bytearray
mutable_bytes = bytearray(b'\x00\x0F')

# Bytearray allows modification
mutable_bytes[0] = 255
mutable_bytes.append(255)
print(mutable_bytes)

# Cast bytearray back to bytes
immutable_bytes = bytes(mutable_bytes)
print(immutable_bytes)
_7

Urutan Byte Sistem

Anda mungkin perlu mengetahui urutan byte apa yang digunakan sistem Anda. Urutan byte mengacu pada big endian atau little endian. Modul sys dapat memberikan nilai tersebut

Apakah biner sebuah string?

String biner adalah urutan oktet (atau byte) . String biner dibedakan dari string karakter dalam dua cara. Pertama, string biner secara khusus memungkinkan penyimpanan oktet bernilai nol dan oktet “tidak dapat dicetak” lainnya (biasanya, oktet di luar rentang desimal 32 hingga 126).

Bagaimana cara mengkonversi dari biner ke string Python?

Data biner dibagi menjadi set 7 bit karena set biner ini sebagai input, mengembalikan nilai desimal yang sesuai yang merupakan kode ASCII dari karakter string. Kode ASCII ini kemudian diubah menjadi string menggunakan fungsi chr() .

Bagaimana biner direpresentasikan dalam Python?

Penggunaan biner bin() dan '0b' . Heksadesimal menggunakan hex() dan '0x'. Oktal menggunakan oct() dan '0o'. Fungsi int() dapat digunakan untuk mengonversi angka menjadi bilangan bulat basis 10 dari basis apa pun antara 2 dan 36 dengan mengubah parameter kedua.