Внутрішні перетворення, як завжди, досить популярні, але перетворення між рядком у байти є більш поширеним у наші дні через те, що для обробки файлів або машинного навчання (Pickle File) ми широко вимагаємо, щоб рядки були перетворені в байти. Давайте обговоримо певні способи, якими це можна зробити.
Спосіб №1: Використання bytes(str, enc) Рядок можна перетворити на байти за допомогою загальної функції bytes. Ця функція внутрішньо вказує на бібліотеку CPython, яка неявно викликає функцію кодування для перетворення рядка у вказане кодування.
Python3
# Python code to demonstrate> # convert string to byte> # Using bytes(str, enc)> # initializing string> test_string>=> 'GFG>is> best'> # printing original string> print>('The original string : '>+> str>(test_string))> # Using bytes(str, enc)> # convert string to byte> res>=> bytes(test_string,>'utf-8'>)> # print result> print>('The byte converted string>is> : '>+> str>(res)>+> ',>type> : '>+> str>(>type>(res)))> |
>
>Вихід:
The original string : GFG is best The byte converted string is : b'GFG is best', type :>
Спосіб №2: Використання encode(enc) Найбільш рекомендований спосіб виконання цього конкретного завдання — використання функції кодування для здійснення перетворення, оскільки це зменшує кількість додаткових посилань на певну бібліотеку, ця функція безпосередньо викликає її.
Python3
# Python code to demonstrate> # convert string to byte> # Using encode(enc)> # initializing string> test_string>=> 'GFG>is> best'> # printing original string> print>('The original string : '>+> str>(test_string))> # Using encode(enc)> # convert string to byte> res>=> test_string.encode(>'utf-8'>)> # print result> print>('The byte converted string>is> : '>+> str>(res)>+> ',>type> : '>+> str>(>type>(res)))> |
>
>Вихід:
The original string : GFG is best The byte converted string is : b'GFG is best', type :>
Спосіб №2: Використання memoryview()
У цьому прикладі ми викликаємо метод encode() для змінної my_string, щоб перетворити її на байти за допомогою кодування UTF-8. Потім ми передаємо отриманий об’єкт bytes у функцію memoryview(), яка повертає об’єкт представлення пам’яті, що забезпечує перегляд базових байтів.
Нарешті, ми викликаємо метод tobytes() в об’єкті перегляду пам’яті, щоб створити новий об’єкт bytes, що містить ті самі дані. Цей об’єкт bytes зберігається в змінній my_bytes і виводиться на консоль.
діаграма моделі e-r
ПРИМІТКА: функція memoryview() корисна в ситуаціях, коли вам потрібно отримати доступ до базових байтів об’єкта без їх копіювання. Однак це може бути не найефективнішим підходом для простого перетворення рядків у байти, оскільки це передбачає додаткові витрати.
Python3
my_string>=> 'Hello, world!'> #Define a string called my_string with the value 'Hello, world!'.> my_bytes>=> memoryview(my_string.encode(>'utf-8'>)).tobytes()> #Encode the string as bytes using the UTF-8 encoding by calling the encode() method on my_string and passing 'utf-8' as the argument. This will return a bytes object containing the encoded bytes.> #Convert the memoryview object of the bytes object to bytes using the tobytes() method. This creates a new bytes object that is a copy of the original bytes object.> #Print the resulting bytes object using the print() function.#> print>(my_bytes)> |
>
>Вихід
b'Hello, world!'>
часова складність: O(n),
просторова складність: O(n)
Спосіб №3: Використання методу binascii.unhexlify():
Алгоритм:
1.Імпортуйте модуль binascii
2. Ініціалізуйте рядок, що містить шістнадцяткове представлення байтів
3. Використовуйте метод unhexlify() модуля binascii для перетворення шістнадцяткового рядка в байти
4. Надрукуйте перетворені байти та їх тип.
Python3
import> binascii> # initializing string> test_string>=> '4766472069732062657374'> # printing original string> print>(>'The original string : '> +> str>(test_string))> # Using binascii.unhexlify()> # convert string to byte> res>=> binascii.unhexlify(test_string)> # print result> print>(>'The byte converted string is : '> +> str>(res)>+> ', type : '> +> str>(>type>(res)))> #This code is contributed by Jyothi pinjala> |
>
>Вихід
The original string : 4766472069732062657374 The byte converted string is : b'GfG is best', type :>
Часова складність:
Метод binascii.unhexlify() має часову складність O(n), де n — довжина вхідного рядка.
Усі інші операції в цьому коді мають часову складність O(1).
Тому загальна часова складність цього коду становить O(n).
Космічна складність:
Складність простору цього коду становить O(1), оскільки він використовує лише постійну кількість додаткового простору, незалежно від розміру вхідних даних.
Спосіб 5: використання методу struct.pack().
Поетапний підхід
Імпортуйте модуль struct у свій код.
Найкраще ініціалізувати рядок під назвою «test_string» зі значенням GFG.
Надрукуйте вихідний рядок за допомогою оператора print.
Використовуйте метод bytes(), щоб перетворити рядок у байти. Передайте методу кодування «test_string» і «utf-8» як параметри.
Використовуйте метод struct.pack(), щоб перетворити байти на двійкові дані. Передайте рядок формату «10s» і байти як параметри методу. Рядок формату «10s» вказує на те, що вхідні дані слід розглядати як рядок довжиною 10.
Збережіть результат у змінній res.
Надрукуйте перетворений рядок байтів разом із його типом за допомогою оператора print.
Python3
друкувати з java
import> struct> # initializing string> test_string>=> 'GFG is best'> # printing original string> print>(>'The original string : '> +> str>(test_string))> # Using struct.pack()> # convert string to byte> res>=> struct.pack(>'10s'>, bytes(test_string,>'utf-8'>))> # print result> print>(>'The byte converted string is : '> +> str>(res)>+> ', type : '> +> str>(>type>(res)))> |
>
>Вихід
The original string : GFG is best The byte converted string is : b'GFG is bes', type :>
Часова складність. Часова складність методів bytes() і struct.pack() становить O(n), де n – довжина вхідного рядка.
Допоміжний простір: складність простору для методів bytes() і struct.pack() становить O(n), де n – довжина вхідного рядка.