- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:CASLIIの数値データ入出力)
CASLIIの数値データ入出力について
このQ&Aのポイント
- CASLIIの数値データ入出力において、JISの文字コード表の値が使用されます。16進数の数値で表される文字には、定数(0030)を減算することで内部コードが得られます。
- 例えば数字の'5'の内部コードは(0035)で、16進数の数値は(0005)です。文字コードの差は16進数の定数(0030)です。
- しかし、アルファベットの'A'の内部コードは(0041)です。16進数の数値は(000A)であり、文字コードの差は16進数の定数(0037)です。なぜここで(0037)になるのか、詳細な過程を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
文字→数値変換ですね。 説明が面倒ですが、内容はごく単純です。頭をやわらかくして。 0 = 文字コード(0030) - (0030) 1 = 文字コード(0031) - (0030) 2 = 文字コード(0032) - (0030) 5 = 文字コード(0035) - (0030) 9 = 文字コード(0039) - (0030) ここで、A = 文字コード - 0030 と同様にやりたいところですが、駄目です。 文字コード表を見ればわかる通り、1~9の文字コードとA~Fの文字コードは離れているので。(連続値として変換できない) A~Fは基準点になる0030という数値が変わってきます。 A = 文字コード(0041) - (0041) + (000A) B = 文字コード(0042) - (0041) + (000A) F = 文字コード(0046) - (0041) + (000A) この、-0041+000A を計算してまとめると、-0037 A = 文字コード(0041) - (0037) となります。 こんな手法プログラム作成時に本当にやるのか!と言われそうですが、 使う人は使いますし、知っておいて損はないです。
その他の回答 (1)
- notnot
- ベストアンサー率47% (4900/10358)
回答No.1
>数値と文字コードの差は16進数で(0030) >というのは理解できます。 0035 - 0005 = 0030 >なぜここで(0037)になるのでしょうか・・。 0041 - 000A = 0037 (10進だと、65 - 10 = 55 ) 全く同じ構造です。
質問者
お礼
ありがとうございました!
お礼
非常に分かりやすくて助かりました! 基本情報も無事高得点も取れて、たまたまこの文字コードに関する問題も出ました! ありがとうございました!