MySQLで16進数文字列を数値に変換する方法
MySQLのCONV()関数を使って16進数文字列を10進数の数値へ変換する
MySQLでは、CONV()関数を使用することで、16進数の文字列を簡単に10進数の数値へ変換できます。基本的な構文は以下の通りです。
SELECT CONV(カラム名, 16, 10) AS エイリアス名 FROM テーブル名;
CONV()関数は第1引数に変換対象の値、第2引数に元の基数(ここでは16進数なので16)、第3引数に変換後の基数(10進数なので10)を指定します。
サンプルテーブルの作成
まず、動作確認用のテーブルを作成しましょう。
mysql> CREATE TABLE DemoTable -> ( -> HexString VARCHAR(100) -> ); Query OK, 0 rows affected (0.82 sec)
テストデータの挿入
次に、INSERT文を使って16進数の文字列データを挿入します。
mysql> INSERT INTO DemoTable VALUES('A');
Query OK, 1 row affected (0.28 sec)
mysql> INSERT INTO DemoTable VALUES('F');
Query OK, 1 row affected (0.19 sec)
mysql> INSERT INTO DemoTable VALUES('B');
Query OK, 1 row affected (0.55 sec)
mysql> INSERT INTO DemoTable VALUES('ABC');
Query OK, 1 row affected (0.11 sec)登録データの確認
SELECT文ですべてのレコードを表示して確認します。
mysql> SELECT * FROM DemoTable;
出力結果
上記のクエリを実行すると、次のような結果が得られます。
+-----------+ | HexString | +-----------+ | A | | F | | B | | ABC | +-----------+ 4 rows in set (0.00 sec)
16進数文字列を数値に変換するクエリ
それでは、CONV()関数を使って16進数文字列を10進数の数値に変換してみましょう。AS句でエイリアス「Number」を指定すると、結果が見やすくなります。
mysql> SELECT CONV(HexString, 16, 10) AS Number FROM DemoTable;
出力結果
実行結果は以下の通りです。各16進数文字列が対応する10進数の数値に正しく変換されていることがわかります。
+--------+ | Number | +--------+ | 10 | | 15 | | 11 | | 2748 | +--------+ 4 rows in set (0.00 sec)
変換結果の解説
- 「A」(16進)→ 10(10進)
- 「F」(16進)→ 15(10進)
- 「B」(16進)→ 11(10進)
- 「ABC」(16進)→ 2748(10進): A=10 × 16² + B=11 × 16¹ + C=12 = 2560 + 176 + 12 = 2748
このように、CONV()関数を使えば基数の異なる数値表現を柔軟に相互変換できます。なお、CONV()関数は2進数から36進数までの間で変換に対応しているため、8進数や2進数への変換にも応用可能です。
-
C++で整数を16進数文字列に変換する方法
この記事では、C++で整数を16進数の文字列に変換する方法を紹介します。整数を16進数へ変換するには、剰余や除算を繰り返す数学的な手順を実装する方法もありますが、ここではより簡単なテクニックを使って問題を解決します。%Xフォーマット指定子とはC/C++には「%X」というフォーマット指定子が用意されています。これは変数の値を16進数形式(大文字のA〜F)で出力するためのもので、「%x」を使えば小文字(a〜f)で出力することもできます。本プログラムでは、このフォーマット指定子と sprintf() 関数を組み合わせることで、数値をそのまま文字列として取得しています。入力: 整数 255 出力: F
-
C#で16進文字列を16進数値に変換する方法
C#では、「7D」のような16進表記の文字列を簡単に数値へ変換できます。この記事では、Convert.ToSByte()メソッドとConvert.ToInt32()メソッドを使った2つの代表的な方法を、サンプルコード付きで解説します。 方法1:Convert.ToSByte()を使う まず、変換対象となる16進文字列を設定します。 string str = "7D"; 次に、Convert.ToSByte()メソッドの第2引数に基数「16」を指定して呼び出すことで、16進文字列を数値に変換できます。 Console.WriteLine(Convert.ToSByte(str