logo

パイソン |文字列をバイトに変換する

相互変換はいつものように非常に人気がありますが、最近では、ファイルまたは機械学習 ( Pickle File ) を処理するために文字列をバイトに変換する必要があるという事実により、文字列からバイトへの変換がより一般的になっています。これを実行する特定の方法について説明しましょう。

方法 #1 : bytes(str, enc) を使用する 文字列は、汎用 bytes 関数を使用してバイトに変換できます。この関数は内部的に CPython ライブラリを指し、文字列を指定されたエンコーディングに変換するために encode 関数を暗黙的に呼び出します。



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) を使用する この特定のタスクを実行する最も推奨される方法は、encode 関数を使用して変換を実行することです。これにより、特定のライブラリへの余分なリンクが 1 つ減り、この関数は直接それを呼び出します。

Python3




LinuxでJavaのバージョンを確認する

# 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() を使用する

この例では、my_string 変数に対して encode() メソッドを呼び出して、UTF-8 エンコーディングを使用してバイトに変換しています。次に、結果のバイト オブジェクトをmemoryview() 関数に渡します。この関数は、基になるバイトのビューを提供するメモリ ビュー オブジェクトを返します。

最後に、メモリ ビュー オブジェクトで tobytes() メソッドを呼び出して、同じデータを含む新しい bytes オブジェクトを作成します。このバイト オブジェクトは my_bytes 変数に保存され、コンソールに出力されます。

注: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.バイトの16進表現を含む文字列を初期化します。
3.binascii モジュールの unhexlify() メソッドを使用して、16 進文字列をバイトに変換します。
4.変換されたバイトとそのタイプを出力します。

Python3


Javaのスタック



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() メソッドを使用します。

段階的なアプローチ

コードに構造体モジュールをインポートします。
「test_string」という名前の文字列を、GFG が最適な値で初期化します。
print ステートメントを使用して元の文字列を出力します。
bytes() メソッドを使用して文字列をバイトに変換します。 「test_string」と「utf-8」エンコーディングをパラメータとしてメソッドに渡します。
struct.pack() メソッドを使用して、バイトをバイナリ データに変換します。フォーマット文字列「10s」とバイトをパラメータとしてメソッドに渡します。 「10s」形式文字列は、入力データを長さ 10 の文字列として扱う必要があることを示します。
結果を変数「res」に保存します。
print ステートメントを使用して、変換されたバイト文字列をその型とともに出力します。

Python3




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 は入力文字列の長さです。