• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:2の補数計算でのsprintf関数の使い方で)

2の補数計算でsprintf関数を使用する方法

このQ&Aのポイント
  • Microsoft Visual C++ 2010 Expressでプログラミングの勉強中です。
  • 2の補数計算で指定された数値の加算後の2の補数を求める際、sprintf関数を使用しようとしています。
  • しかし、sprintf関数を使用して文字列の生成を試みるものの、結果が期待したものとなりません。どのように修正すれば良いでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

「必要なところ」のみが取り出せるよう, 適切な演算をしてください.

techhouse
質問者

お礼

回答頂きありがとうございます。 iHosu = ~iTotal; // 1の補数 iHosu++; // +1 iHosu = iHosu & 0x00FF; sprintf( cAns, "%s%02X%c", cOrg, iHosu, 0x22 ); printf( "%s\n", cAns ); //文字列結果」 このようにすることでできるようになりました。助かりました。

その他の回答 (1)

回答No.1

iHosu = ~iTotal; // 1の補数 iHosu++; // +1 iHosu &= 0xff; sprintf( cAns, "%s%02X%c", cOrg, iHosu, 0x22 ); >と出てほしいのですが、 >”100000004466FFFFFFFFFFFFFFFFFFFFFFFFFFFF154” >とでます。 注意力が不足している。 ”100000004466FFFFFFFFFFFFFFFFFFFFFFFFFFFF154” ではなくて ”100000004466FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF154” が出ている筈だ。「F」の個数を良く数えてみなさい。

techhouse
質問者

お礼

回答頂きありがとうございます。現在私はATmega88というマイコンのプログラミングなどをしているのですが、このマイコンのEEPROMメモリーの内容を書き換える際にテキストファイル化されたインテルHEXというテキストを扱うときがあり、データの編集をテキストエディタで行う際に2の補数計算が必要になります。 int型が32ビットなので、FFFFF154が後ろに付くと思うのですが、インテルHEXファイルのフォーマットなのでしょうがこの中の54の部分のみが必要になるようです。 なるべくなら、54以外の文字列を消したいと考えています。

関連するQ&A