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



我想加两个十六进制值来得到一个结果的十六进制值。我已经写了下面的代码,但是当我打印结果的值时,结果的值是写的,例如"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);
  }
li = li + atol (buffer);

atol在第一个非数字(十进制)处停止。要解析十六进制表示,请使用

li += strtol(buffer, NULL, 16);

我假设这里有两个字符串"TextAlia"one_answers"TextAlib",每个字符串都包含十六进制数字的字符串表示。将数字相加并生成十六进制字符串作为输出的一种典型方法是:

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

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

试着看看这个:在C#中添加hexa值

或者试试这个:

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

希望这能有所帮助。

相关内容

最新更新