-1

私は変数を持っています:

int a = 10;

as:0xの前にある16進値に変換し、他の変数に割り当てたいのですが、どのように変換しますか?100x10

4

3 に答える 3

3

使用snprintf()

char buf[128];
snprintf(buf, 128, "0x%d", a); // buf = "0x10"

次に、以下を使用して読み返しますsscanf()

unsigned int new_a;
if (1 == sscanf(buf, "0x%X", &new_a))
{
}
于 2013-03-04T10:28:30.150 に答える
2

10 進数を 16 進数として再解釈しようとする場合、問題は次のように多項式A = a*10^n + b*10^(n-1) + ... + cを再評価することを意味B=a*16^n + b*16^(n-1) + ... + cします。

     1 1 2 3  = 1*1000 + 1 * 100 + 2 * 10 + 3
(0x) 1 1 2 3  = 1*4096 + 1 * 256 + 2 * 16 + 3 (=4387 dec)

modulo と 10 で除算を繰り返して係数を求め、適切な 16 の累乗を掛けた結果を加算します (シフトを使用して実装)。

于 2013-03-04T10:35:15.237 に答える
0

これは表現の問題です。10 進数値を 16 進数として簡単に表すことができます。

print("0x%x", a);

0xa特定のケースで印刷されます。0xaCまたは 10 または 012 がある場合は重要ではないためです。

于 2013-03-04T10:32:10.697 に答える