1

我想添加两个十六进制值以获得结果十六进制值我已经编写了以下代码但是当我打印结果值时,结果值被写入例如"abc" ->61+62+63=186但是在写入时jk ->6a+6b我应该得到类似d5但是它给出的东西12

这是我写的代码:

我还将全局变量定义为

  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在第一个非数字(十进制)处停止。要解析十六进制表示,请使用

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

我在这里假设您有两个字符串“TextAlia”和“TextAlib”,每个字符串都包含一个十六进制数字的字符串表示形式。添加数字并生成十六进制字符串作为输出的一种典型方法:

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

然而,这并不是在 C 中添加十六进制数字的最快方法,也不是以典型的 C++ 风格编写的。

于 2012-07-18T16:03:20.153 回答
0

试试看这个:在 C# 中添加六进制值

或者试试这个:

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

希望这可以帮助。

于 2012-07-18T14:01:11.810 回答