我想添加两个十六进制值来获得结果的十六进制值我编写了以下代码但是当我打印结果的值时,结果值是写的,例如"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);
}
答案 0 :(得分:3)
li = li + atol (buffer);
atol
在第一个非数字(十进制)处停止。要解析十六进制表示,请使用
li += strtol(buffer, NULL, 16);
答案 1 :(得分:1)
我在这里假设你有两个字符串“TextAlia”和“TextAlib”,每个字符串都包含一个十六进制数字的字符串表示。添加数字并生成十六进制字符串作为输出的一种典型方法:
int a, b;
sscanf(TextAlia, "%x", &a);
sscanf(TextAlib, "%x", &b);
printf("%x", a + b);
然而,这不是在C中添加十六进制数字的最快方法,也不是用典型的C ++风格编写的。
答案 2 :(得分:0)
试着看一下:Adding hexa values in C#
或试试这个:
int value = Convert.ToInt32(hexString1, 16) + Convert.ToInt32(hexString2, 16);
希望这有帮助。