十六進数で答えが返って来な〜い(ioi)。

 ええと……昨日のメモに書いた

tcha	っちゃ

74,63,68,61,3D,82,C1,82,BF,82,B1,\
t  c  h  a  =  [っ] [ち]  [ゃ]

へと変換するスクリプトを組みたかったのですが、そもそも「文字→16進数」の変換部分ですっかり頓挫しています。
 外で見直すつもりなので、とりあえず貼ってみます。


 jgawkに喰わせるテキストはこんな感じ。

ca	か
tcha	っちゃ


 jgawkに喰わせるソースはこんな感じ。
 BEGINもENDも無く、テキストの行ごとにこの処理を繰り返します。
 コピペ&コメント&コメントアウト多数なのは……クセなので気にしないでくださいorz

{
	/* ↓廃棄コード */
	/* print $0; */
	/* print $0,$1,$2; */
	/* ↑廃棄コード */
	
	
	/* $1; 行内において、一つめのレコードを読む。 */
	_AsciiChara = $1;
	/* 	print "_AsciiChara=",_AsciiChara; */

	/* $2; 行内において、二つめのレコードを読む。 */
	_SjisChara = $2;
	/* 	print "_SjisChara=",_SjisChara; */

	/* 一つめのレコード(ASCII綴り)長さについて、二バイト文字を考慮し数える。 */
	_AsciiJLength = jlength(_AsciiChara);
	/* 	print "jlength(_AsciiLength)=",_AsciiJLength; */

	/* 二つめめのレコード(SJISかな)長さについて、二バイト文字を考慮し数える。 */
	_SjisJLength = jlength(_SjisChara);
	/* 	print "jlength(_SjisLength)=",_SjisJLength; */

	/* 一つめのレコード(ASCII綴り)長さについて、二バイト文字を考慮せずに数える。 */
	_AsciiLength = length(_AsciiChara);
	/* 	print "length(_AsciiLength)=",_AsciiLength; */

	/* 二つめめのレコード(SJISかな)長さについて、二バイト文字を考慮せずに数える。 */
	_SjisLength = length(_SjisChara);
	/* 	print "length(_SjisLength)=",_SjisLength; */


	/* 一つめのレコード(ASCII綴り)長さについて、二バイト文字を考慮し順次出力する。 */
	/* for(i=1;i<=_AsciiLength;i++){ */
	/* 	printf("%s " ,jsubstr(_AsciiChara, i, 1)+0 ); */
	/* 	print "→",i; */
	/* } */
	/* 二つめめのレコード(SJISかな)長さについて、二バイト文字を考慮し順次出力する。 */
	/* for(i=1;i<=_SjisLength;i++){ */
	/* 	printf("%s " ,jsubstr(_SjisChara, i, 1)+0 ); */
	/* 	print "→",i; */
	/* } */

	/* 一つめのレコード(ASCII綴り)長さについて、二バイト文字を考慮せず順次出力する。 */
	for(i=1;i<=_AsciiLength;i++){
		printf("%s " ,substr(_AsciiChara, i, 1) ); /* +0 */
		print "→",i;
	}
	/* 二つめめのレコード(SJISかな)長さについて、二バイト文字を考慮せず順次出力する。 */
	for(i=1;i<=_SjisLength;i++){
		printf("%X " ,substr(_SjisChara, i, 1) ); /* +0 */
		print "→",i;
	}
}


 出力結果はこんな感じ。

C:\>jgawk -f tikan.awk tikan.txt
c → 1  ※"%s "
a → 2
0 → 1  ※"%X " 
0 → 2
t → 1  ※"%s "
c → 2
h → 3
a → 4
0 → 1  ※"%X " 
0 → 2
0 → 3
0 → 4
0 → 5
0 → 6

C:\>

 単に"%X " をつけてやれば大丈夫なのかなぁ……と思ってやってみたのですが、見事に失敗してしまいました。
 ついでに「substr(_AsciiChara, i, 1) +0」にすれば数字になるのかなぁ……と思ってやってみたのですが、こちらも見事に無駄足に。


 うーん、何が間違っているのやら……。
 ええ、思いっきり「整形以前」の問題ですともorz