我想加两个十六进制值来得到一个结果的十六进制值。我已经写了下面的代码,但是当我打印结果的值时,结果的值是写的,例如"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);
希望这能有所帮助。