C++ 添加十六进制值以获得结果十六进制

C++ 添加十六进制值以获得结果十六进制,c++,wxwidgets,hex,C++,Wxwidgets,Hex,我想添加两个十六进制值以获得结果十六进制值我已经编写了以下代码,但是当我打印结果值时,结果值是write,例如“abc”->61+62+63=186但是在写jk->6a+6b时,我应该得到类似d5的东西,但是它给出了12 这是我写的代码: 我还将globals定义为 char buffer[20]; long int li ; for (int i = 0; i < length; ++i) { itoa(TextAlia[i], buffer, 16);

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

这是我写的代码:

我还将globals定义为

  char buffer[20];
  long int li ;

  for (int i = 0; i < length; ++i) {
      itoa(TextAlia[i], buffer, 16);
      li = li + atol (buffer);
  }
char缓冲区[20];
龙英利;
对于(int i=0;i
atol
在第一个非数字(十进制)处停止。要解析十六进制表示,请使用

li += strtol(buffer, NULL, 16);
atol
在第一个非数字(十进制)处停止。要解析十六进制表示,请使用

li += strtol(buffer, NULL, 16);
试着看看这个:

或者试试这个:

int value = Convert.ToInt32(hexString1, 16) + Convert.ToInt32(hexString2, 16);
希望这有帮助。

试着看看这个:

或者试试这个:

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

希望这有帮助。

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

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

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

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

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

<>这不是C中添加十六进制数的最快的方法,也不是用典型C++风格编写的。

表示:代码> 6a < /代码>(十六进制)<代码> 152 < /COD>(八进制),<代码> 1101010 < /C>(二进制)和<代码> 106 < /C> >(十进制)只是需要适当的上下文来进行操作的符号。通常,标准数学函数仅适用于十进制表示形式,因此您需要将数字表示形式转换为十进制(并返回)。表示形式为
6a
(十六进制)
152
(八进制)、
1101010
(二进制)和
106
(十进制)只是需要适当上下文才能进行操作的符号。通常,标准数学函数只对十进制表示有效,因此您需要将数字表示转换为十进制(并返回)。您可能将
C++
C#
混淆了?您可能将
C++
C#
混淆了?