文字列を文字コードに変換する(ANSI&UnicodeUTF16)
77 CharToCharCode 動作確認 Delphi2007 更新日 2008/03/03(月)

文字コードはよく16進数で表現されるので
それにあわせて変換します。

文字をコードに変換する場合は次のようにします。

  ShowMessage(IntToHex(word('A'),2));
  ShowMessage(IntToHex(Ord('A'),2));

    41
    と表示されます

逆にコードの値から文字に変換するには次のようにします。

  ShowMessage(Char(StrToInt('$41')));
  ShowMessage(Char($41));
  ShowMessage(Chr($41));

    どれでも
    A
    と表示されます。

OrdとChrを使うのがより適切です。


日本語、Shift-JISの場合も1文字ずつ取り出してコードを調べることができますし
UnicodeUTF-16(Windows上のUnicodeでは標準)も
同じような方法で取得できます。
────────────────────
//AnsiString、Shift-JISの場合
procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
begin//
  for i := 1 to Length(Edit1.Text) do
  begin
    Memo1.Lines.Add( IntToHex( Ord( Edit1.Text[i] ), 2) );
  end;
end;

//WideString、UnicodeUTF16の場合
procedure TForm1.Button2Click(Sender: TObject);
var
  i: Integer;
  ws: WideString;
begin//
  ws := Edit2.Text;
  for i := 1 to Length(ws) do
  begin
    Memo2.Lines.Add(
      IntToHex( Word( ws[i] ), 4 ) );

//このように書く事も可能
//    Memo2.Lines.Add(
//      IntToHex( HiByte( word( ws[i] ) ), 2) +
//      IntToHex( LoByte( word( ws[i] ) ), 2) );
  end;
end;
────────────────────
"abcABCあいう"という文字列を設定した場合
Memo1にはShiftJISコードで
    61
    62
    63
    41
    42
    43
    82
    A0
    82
    A2
    82
    A4
と出力され、
Memo2ではUnicodeUTF16で
    0061
    0062
    0063
    0041
    0042
    0043
    3042
    3044
    3046
と出力されます。

────────────────────
アスキーコード(ASCII CODE)表を記述しておきます。
┌─┬┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐
│  ││0│1│2│3│4│5│6│7│8│9│A│B│C│D│E│F│→上位
├─┼┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤4ビッ
├─┼┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤ト
│0││*│*│SP│ 0│ @│ P│ `│ p│  │  │半│半│半│半│  │  │
├─┼┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
│1││*│*│ !│ 1│ A│ Q│ a│ q│  │  │半│半│半│半│  │  │
├─┼┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
│2││*│*│ "│ 2│ B│ R│ b│ r│  │  │半│半│半│半│  │  │
├─┼┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
│3││*│*│ #│ 3│ C│ S│ c│ s│  │  │半│半│半│半│  │  │
├─┼┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
│4││*│*│ $│ 4│ D│ T│ d│ t│  │  │半│半│半│半│  │  │
├─┼┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
│5││*│*│ %│ 5│ E│ U│ e│ u│  │  │半│半│半│半│  │  │
├─┼┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
│6││*│*│ &│ 6│ F│ V│ f│ v│  │  │半│半│半│半│  │  │
├─┼┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
│7││*│*│ '│ 7│ G│ W│ g│ w│  │  │半│半│半│半│  │  │
├─┼┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
│8││*│*│ (│ 8│ H│ X│ h│ x│  │  │半│半│半│半│  │  │
├─┼┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
│9││*│*│ )│ 9│ I│ Y│ i│ y│  │  │半│半│半│半│  │  │
├─┼┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
│A││*│*│ *│ :│ J│ Z│ j│ z│  │  │半│半│半│半│  │  │
├─┼┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
│B││*│*│ +│ ;│ K│ [│ k│ {│  │  │半│半│半│半│  │  │
├─┼┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
│C││*│*│ ,│ <│ L│ \│ l│ |│  │  │半│半│半│半│  │  │
├─┼┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
│D││*│*│ -│ =│ M│ ]│ m│ }│  │  │半│半│半│半│  │  │
├─┼┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
│E││*│*│ .│ >│ N│ ^│ n│ ~│  │  │半│半│半│半│  │  │
├─┼┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
│F││*│*│ /│ ?│ O│ _│ o│*│  │  │半│半│半│半│  │  │
└─┴┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘
  ↓下位
    4ビット

[41]が『A』になり
[7A]が『z』になります。

半は半角カナ領域です。

参考────────────────────
文字列の注意点(その1)
http://www.threeweb.ad.jp\~satou\string.htm

注意────────────────────
ここで紹介しているUnicodeUTF-16とはUTF-16のBMP部分だけで
サロゲートペアについては配慮していませんので
UCS-2と呼べるようです。