C言語関係掲示板

過去ログ

No.209.数値を文字列に変換


No.1298

数値を文字列に変換
投稿者---あき(2002/03/20 23:07:43)


初めまして,あきともうします。
現在,16進数の値(byte)を文字列に変換するプログラムを作成しています。
それぞれの桁の値をを &0xf してビット右シフトした後に,
該当の桁が ”文字か数字か”で場合分けします。このとき,
文字の場合はたとえば該当の桁の数値が tmp とすると,
char tmp;
tmp = tmp - 10 + 'A'
とすることはわかったのですが,
どうして
tmp = tmp + 0x31 ではだめなのかわかりません。
たとえば,tmp = 0x0B なら
0x0B + 0x31 = 0x42('B')になると思うのですが,
実際にはなりません。
どなたか教えていただけると幸いです。



No.1300

Re:数値を文字列に変換
投稿者---ピーマン(2002/03/21 00:35:03)


#include <iostream.h>
main(){
printf("%c", 0x0b + 0x31);
// 11+49=60
// 60は<
// 60は0x3c
// 0x0B + 0x31 = 0x3c('<')になる
}

No.1302

Re:数値を文字列に変換
投稿者---あき(2002/03/21 23:01:48)


ピーマンさん,ご指摘ありがとうございます。
>#include <iostream.h>
>main(){
>printf("%c", 0x0b + 0x31);
>// 11+49=60
>// 60は<
>// 60は0x3c
>// 0x0B + 0x31 = 0x3c('<')になる
>}
おっしゃる通りです。
10進数と16進数を混同していたようです。
ありがとうございました。


戻る


「初心者のためのポイント学習C言語」 Last modified:2002.05.26
Copyright(c) 2000-2002 TOMOJI All Rights Reserved