1

結果の16進数値を取得するために2つの16進数値を追加したいのですが、次のコードを書きましたが、結果の値を出力すると結果の値が"abc" ->61+62+63=186書き込まれjk ->6a+6bます。d512

これは私が書いたコードです:

私はまた、グローバルを次のように定義しました

  char buffer[20];
  long int li ;

  for (int i = 0; i < length; ++i) {
      itoa(TextAlia[i], buffer, 16);
      li = li + atol (buffer);
  }
4

3 に答える 3

3
li = li + atol (buffer);

atol最初の非数字 (10 進数) で停止します。16 進表現を解析するには、次を使用します。

li += strtol(buffer, NULL, 16);
于 2012-07-18T13:56:58.990 に答える
1

ここでは、"TextAlia" と "TextAlib" の 2 つの文字列があり、それぞれに 16 進数の文字列表現が含まれていると仮定します。数値を加算して 16 進数の文字列を出力として生成する一般的な方法の 1 つ:

int a, b;
sscanf(TextAlia, "%x", &a);
sscanf(TextAlib, "%x", &b);
printf("%x", a + b);

ただし、これは C で 16 進数を加算する最速の方法ではなく、典型的な C++ スタイルでも記述されていません。

于 2012-07-18T16:03:20.153 に答える
0

これを見てみてください: Adding hex values in C#

またはこれを試してください:

int value = Convert.ToInt32(hexString1, 16) + Convert.ToInt32(hexString2, 16);

お役に立てれば。

于 2012-07-18T14:01:11.810 に答える