はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

【Python】文字列を数字に変換してみた

はじめに

ちょうど深層学習の勉強を今しているのですが、どうしても文字列を固有の数字に変換する必要がありました。

そこで文字コードを用いた方法を見つけたので、軽くまとめたいと思います!

文字列を UTF-8 のバイト列に変換する

最初に文字列を UTF-8 のバイト列に変換することで文字列を16進法を用いた表し方に変更します。

hoge = 'ハロー!'.encode('utf-8')
print(hoge)

これを実行してみると、

b'\xe3\x83\x8f\xe3\x83\xad\xe3\x83\xbc\xef\xbc\x81'

このように表示されました。

ちゃんと16進数に変える

ただ、先ほどのコードではいらない箇所がいくつもあります。

そこで、少しだけ進化したコードに変更します。

hoge = 'ハロー!'.encode('utf-8', 'replace').hex()
print(hoge)

これを実行してみると、

e3838fe383ade383bcefbc81

いらない箇所が消え、16進数に表示されていることが分かります!

16進数から10進数に変換する

さいごに10進数にすることで今回は完成となります。

16進数から10進数に変換するのはとても簡単です!

hoge = 'ハロー!'.encode('utf-8', 'replace').hex()
fuga = int(hoge,16)
print(fuga)

これも同様に実行してみると、

70412146007121292258635136129

いい感じに文字列を数字に変更ができました!

さいごに

これはutf-8文字コードを用いているので、1つの文字列に1つの数字が対応していて、被るということはないはずです。
これで文字列から固有の数字が生成できました!