0

私はCでwiritngしていて、整数の変換に問題があります。

私がやりたいことは次のとおりです。

チェックサムという整数があります。

この整数を16進形式に変換してから、最後の2桁だけを取り、それらをdez形式の整数に変換し直したいと思います。

例:

チェックサム=-864

16進数では、これは次のようになります。FFFFFFFFFFFFFCA0

最後の2桁は次のとおりです。A0

また、dez形式の「A0」は160です。

Cでこれを行うにはどうすればよいですか?

4

4 に答える 4

1
char m_c_end_dec = (char)checksum & 0xff;
int m_end_dec = (int)m_c_end_dec;

charは1ビットしかないため、単純なキャストでは最後のビットを取得し、それをintに再キャストして、A0を160にします。

于 2013-02-21T14:36:16.137 に答える
0

これが(中間の)16進表現とどのように関係しているかはわかりません(また、なぜそれについて怒鳴る必要があるのか​​わかりません)。チェックサムの最後のバイトを取得し、適切なフォーマット文字列を使用して印刷します。

printf("checksum is %d\n", checksum & 0xff);
于 2013-02-21T14:35:45.667 に答える
0

または文字列形式を使用します。例えば

printf( "%02x"、チェックサム)

または大文字のprintf( "%02X"、チェックサム)

于 2013-02-21T14:36:41.877 に答える
0

結果として文字列を受け入れる場合、 16 進数への変換は再帰的に実現できます。この文字列から、最後の 2 桁を簡単に切り取り (google/SO をチェック)、元に戻すことができます。

于 2013-02-21T14:41:41.063 に答える