☆バイト分解

ASCII文字列及び日本語文字列を,バイトに分解する。

・C++言語
・VB
・Perl5

・C++言語

元々バイトでしか扱えないので,全然問題にならない。

char mojiretu[]="test 文字列";
または,
char mojiretu[13];
strcpy(mojiretu,"test 文字列");
として変数に代入する行為自体が,バイトに分解して格納した事になる。

取り出す時には,0より始まる添え字を指定する。
char moji;
moji = mojiretu[0];
これで,先頭の t を取り出せる。

【注意】
一番最後を識別する \0 が付加されるのが,この言語の特徴です。
上記例では,mojiretu[12]; にその \0 が入っています。
常に文字列の最後にある \0 に気を付ける必要があります。

・VB

実はVBで文字列をバイト単位に分解するのは,かなり難易度の高い処理です。
一発で分解する関数は用意されていない。そこで,下記のようにして分解する。

Dim mojiretu As String
mojiretu = "test 文字列"
Dim moji(11) As Byte
Dim i As Integer, j As Integer
Dim work As Long
For i = 1 To Len(mojiretu) Step 1
work = Asc(Mid$(mojiretu, i, 1))
If (0 <= work And work <= 255) Then
moji(j) = work
j = j + 1
Else
work = work + 65536
moji(j) = Int(work / 256)
moji(j + 1) = work Mod 256
j = j + 2
End If
Next i

取り出す時には,0より始まる添え字を指定する。
Dim moji2 As Byte
moji2 = moji[0]
これで,先頭の t を取り出せる。

・Perl5

直接分解する関数は無いが,下記のようにして分解する。

$mojiretu = 'test 文字列';
@moji = split(//, $mojiretu);

取り出す時には,0より始まる添え字を指定する。
$moji2 = $moji[0];
これで,先頭の t を取り出せる。

参考までに,ASCIIコードを取り出したい場合は,vec関数を使う。
foreach(@moji){
push(@ascii,vec($_,0,8);
}