|
>>sprintf()を使ってバイナリーで格納されている数値データをchar型の文字列に
>>変換したいのですが、sprintf(buf ,"%d",i); とやっても符号付の文字列になってしまいます。(例 0xFF → "−1")
>>i をunsigned int で宣言しても同じです。どうすればよいのでしょうか?教えてください。
>
>「"%d"」の書式は渡された引数を「int」型と見なし整数文字列に変換します。
>符号無し整数値として変換したい場合は、「"%u"」の書式になります。
>
># でも、0xFF なら int 型でも 255 になります。
># どのようなソースで確認しているのでしょうか?
回答ありがとうございます。
まず、char型データとバイナリデータが混ざった、文字列(電文)をつくり、そこからデータを取り出すテストプログラムです。
//テスト電文の作成
unsigned char code = 0xFF;
sprintf( testbuf, "12345%c6789", code );
//電文からデータの取り出し
sprintf( workbuf, "%04d", testbuf+5 );
//結果の確認
printf("結果コード :[%s]\n",workbuf );
=========================
255 という結果を取り出したいのです、必ず -1 になってしまいます・・・。
128以下なら普通に取りだせます。(結果は 0128)
|