- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:2の補数計算でのsprintf関数の使い方で)
2の補数計算でsprintf関数を使用する方法
このQ&Aのポイント
- Microsoft Visual C++ 2010 Expressでプログラミングの勉強中です。
- 2の補数計算で指定された数値の加算後の2の補数を求める際、sprintf関数を使用しようとしています。
- しかし、sprintf関数を使用して文字列の生成を試みるものの、結果が期待したものとなりません。どのように修正すれば良いでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
「必要なところ」のみが取り出せるよう, 適切な演算をしてください.
その他の回答 (1)
- chie65536(@chie65535)
- ベストアンサー率44% (8755/19867)
回答No.1
iHosu = ~iTotal; // 1の補数 iHosu++; // +1 iHosu &= 0xff; sprintf( cAns, "%s%02X%c", cOrg, iHosu, 0x22 ); >と出てほしいのですが、 >”100000004466FFFFFFFFFFFFFFFFFFFFFFFFFFFF154” >とでます。 注意力が不足している。 ”100000004466FFFFFFFFFFFFFFFFFFFFFFFFFFFF154” ではなくて ”100000004466FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF154” が出ている筈だ。「F」の個数を良く数えてみなさい。
質問者
お礼
回答頂きありがとうございます。現在私はATmega88というマイコンのプログラミングなどをしているのですが、このマイコンのEEPROMメモリーの内容を書き換える際にテキストファイル化されたインテルHEXというテキストを扱うときがあり、データの編集をテキストエディタで行う際に2の補数計算が必要になります。 int型が32ビットなので、FFFFF154が後ろに付くと思うのですが、インテルHEXファイルのフォーマットなのでしょうがこの中の54の部分のみが必要になるようです。 なるべくなら、54以外の文字列を消したいと考えています。
お礼
回答頂きありがとうございます。 iHosu = ~iTotal; // 1の補数 iHosu++; // +1 iHosu = iHosu & 0x00FF; sprintf( cAns, "%s%02X%c", cOrg, iHosu, 0x22 ); printf( "%s\n", cAns ); //文字列結果」 このようにすることでできるようになりました。助かりました。