Base36は、バイナリデータをASCII文字列形式で基数-36の表現に変換して表すバイナリからテキストへのエンコード方式です。36を選択したのは、数字をアラビア数字の0~9とラテン文字のA~Z [1] ( ISO基本ラテンアルファベット)を使用して表すことができるため便利です。
各 base36 桁を表すには 6 ビット未満の情報が必要です。
変換
符号付き32ビットおよび64ビット整数は、 それぞれ最大 6 桁または 13 桁の 36 進数しか保持できません (36 進数の桁数が多すぎると、32 ビットおよび 64 ビット整数がオーバーフローする可能性があります)。たとえば、64 ビット符号付き整数の最大値「9223372036854775807」は、36 進数では「1Y2P0IJ32E8E7」です。同様に、32 ビット符号付き整数の最大値「2147483647 」は、36 進数では「 ZIK0ZJ 」です。
標準実装
C89以降のC標準ライブラリはstrtolとstrtoul関数を介してbase36の数値をサポートしています[2]
Common Lisp標準(ANSI INCITS 226-1994)では、のような関数はparse-integer2から36までの基数をサポートしています。[3]
Java SEは、 2から36までの異なる基数への文字列の変換をサポートしています。たとえば、[1]と[2]
Javaと同様に、JavaScriptも2から36までの異なる基数への変換をサポートしています。[3]
PHP は、Java と同様に、PHP 4 以降で利用可能な base_convert 関数を使用して、文字列を 2 から 36 までのさまざまな基数に変換できます。
Goは、組み込みのstrconv.FormatInt()、、strconv.FormatUint()関数を使用して、 2から36までの異なる基数への文字列の変換をサポートしています。 [4] [5]strconv.ParseInt()また、組み込みの、、関数を使用して、2から36までの異なる基数でエンコードされた文字列からの変換もサポートしていますstrconv.ParseUint()。[6] [7]
Pythonでは、文字列を2進数から36進数に変換することができます。[8]
参照
参考文献
- ^ Hope, Paco; Walther, Ben (2008)、Web Security Testing Cookbook、カリフォルニア州セバストポル:O'Reilly Media, Inc.、ISBN 978-0-596-51483-9
- ^ "strtol、strtoll — cppreference.com".
- ^ “Common Lisp HyperSpec”. LispWorks . 2022年8月3日閲覧。
- ^ 「Strconv パッケージ - strconv - PKG.go.dev」。
- ^ 「Strconv パッケージ - strconv - PKG.go.dev」。
- ^ 「Strconv パッケージ - strconv - PKG.go.dev」。
- ^ 「Strconv パッケージ - strconv - PKG.go.dev」。
- ^ 「組み込み関数 — Python 3.10.0 ドキュメント」。
