どうも!リョクちゃです。
今回は、Asciiコードと呼ばれる文字コードの制御文字を除いて
16進数に変換してみたので紹介します。
ちなみに前回の記事はこちら
目次
Asciiコードとは
ASCII(アスキー、英: American Standard Code for Information Interchange)は、現代英語や西ヨーロッパ言語で使われるラテン文字を中心とした文字コード。これはコンピュータその他の通信機器において最もよく使われているものである。
出典: フリー百科事典『ウィキペディア(Wikipedia)』
アルファベット、数字や記号などを収録しています。
最も基本的な文字コードとして世界的に普及しています。
他の多くの文字コードがASCIIの拡張になるよう実装されています。
文字を7ビットの値で表し、半角英数字と記号が含まれます。
※日本語は存在しません。
上位ビットが3桁、下位ビットが4桁でそれぞれ構成されています。
上位ビットが3桁なのは、先頭の1桁が通信の際にデータの転送が正しく行われたかどうかを
チェックするためのパリティ・ビットとして使用される場合があるからです。
ちなみにAsciiコードは、1文字を1バイトとして扱います。
1バイト = 8ビット
Asciiコード表
下に16進数とAsciiの対応表を示します。
上位ビット/下位ビット | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|---|
0 | NUL | DLE | SPACE | 0 | @ | P | ` | p |
1 | SCH | DC1 | ! | 1 | A | Q | a | q |
2 | STX | DC2 | " | 2 | B | R | b | r |
3 | ETX | DC3 | # | 3 | C | S | c | s |
4 | EOT | DC4 | $ | 4 | D | T | d | t |
5 | ENQ | NAK | % | 5 | E | U | e | u |
6 | ACK | SYN | & | 6 | F | V | f | v |
7 | BEL | ETB | ' | 7 | G | W | g | w |
8 | BS | CAN | ( | 8 | H | X | h | x |
9 | HT | EM | ) | 9 | I | Y | i | y |
A | LF | SUB | * | : | J | Z | j | z |
B | VT | ESC | + | ; | K | [ | k | { |
C | FF | FS | , | < | L | \ | l | | |
D | CR | GS | - | = | M | ] | m | } |
E | SO | RS | . | > | N | ^ | n | ~ |
F | SI | US | / | ? | O | _ | o | DEL |
上位ビット1列目と2列目の0と1は制御文字になります。
Asciiの上位ビットと下位ビットの組み合わせをビット・パターンといい、
例えば、半角文字”A”をAsciiコードを16進数で表すと、”41″になります。
ちなみに2進数だと、
0100 0001
になります。
この表を使って、正しく変換されているかどうかを確認していきます。
準備編
VisualStudio2019を使って、Windowsフォームアプリケーションを作成していきます。
最初の手順については、下記記事をご参照ください。
フォームの作成
以下のようなフォームを作成します。
①~⑤のコントロールについては以下の表のとおりです。
No | コントロール | 名前 |
---|---|---|
1 | Label | Label1 |
2 | TextBox | tbxTarget |
3 | Label | Label2 |
4 | TextBox | tbxResult |
5 | Button | btnConvert |
各コントロールのフォントは、メイリオの18ptを設定しています。
実行環境
筆者の実行環境は、
- VisualStudio2019
- Windows 10 64bit
- .Net Framework 4.5.1
になります。
※ Windows7 8 8.1でも動作はできますが、画面デザインの表示が変わるかもしれません。
アプリケーションの目的
16進数に変換したいAsciiコードを入力し、変換ボタンを押すことで
変換された結果が変換結果ボックスへ正しく表示されることを目的とします。
動作
動作としては、
- tbxTargetへ16進数に変換したいAsciiコードを入力します。
- btnConvertを押すことで、btnTargetへ入力された情報を16進数へ変換する。
- 変換した結果をtbxResultへ表示する。
これらができることとします。
プログラム編
Asciiコードを16進数に変換するには、まず入力された文字(日本語を含まない)を
Asciiに変換する必要があります。
その後、16進数に変換をしていきます。
Asciiコードへの変換
入力された文字をAsciiに変換するには、Asc()関数を使います。
引数に指定した変換したい文字のAscii(文字コード)を整数型で返してくれます。
複数の文字が引数に渡された場合、最初の1文字目のAscii(文字コード)を返します。
例えば、ABCDEを入力値として渡したとき、返り値としては”65″になります。
16進数への変換
変換されたAsciiを16進数に変換するには、Hex()関数を使用します。
例えば、65を16進数に変換した場合、返り値としては、”41″になります。
Asciiコードから16進数への変換
AscとHexを用いて、Asciiコードから16進数へ変換したいときは、
と書くことで行えます。
では、これらを使い、ボタンが押されたら変換するコードを書いていきます。
1 2 3 4 5 6 7 8 |
''' <summary> ''' 変換ボタン押下時 ''' </summary> ''' <param name="sender"></param> ''' <param name="e"></param> Private Sub btnConvert_Click(sender As Object, e As EventArgs) Handles btnConvert.Click Me.tbxResult.Text = Hex(Asc(Me.tbxTarget.Text)) End Sub |
実行編
実際に実行をしていきます。
プログラム起動時
変換したいAsciiに”A”を入力
変換ボタンを押し、結果が入力された
まとめ
Asciiコードを16進数に変換する方法を紹介しました。
Asciiコードは幅広く使われている文字コードでベースにもなるので、
覚えておいて損はありません。
何らかの参考になれば嬉しいです。
最後までお読みいただきありがとうございます。
・こちらの書籍を参考にVB.Net勉強しています。