我想添加一个十六进制数组。我已经这样做了,但是我在加法函数中遇到了问题;它不是添加而是显示一些图片。
void addition(char hexDecOne[10], char hexDecTwo[10], char (&hexDecSum)[10]) {
for (int i = 0; i < 10; i++) {
// convert to decimal and add both array values
hexDecSum[i] = convert(hexDecOne[i]) + convert(hexDecTwo[i]);
// add values and if they are greater than F add 1 to next value
hexDecSum[i + 1] += hexDecSum[i] / 16;
hexDecSum[i] %= 16;
}
}
int convert(char item) {
switch (item) {
case 'A':
return 10;
break;
case 'B':
return 11;
break;
case 'C':
return 12;
break;
case 'D':
return 13;
break;
case 'E':
return 14;
break;
case 'F':
return 15;
break;
}
}
我们将不胜感激。
最佳答案
存储在 hexDecOne
和 hexDecTwo
中的“数字”不是十六进制数字,它们是等于 '0'
的字符,'1'
,等等直到 'F'
。您的 convert
函数还需要将字符 '0'
转换为 '9'
,然后您需要以其他方式转换结果周围使您的数字显示为字符。
顺便说一句,当两个 hexDec
的最高有效数字相加意味着非空进位时,您的代码会造成缓冲区溢出。
关于c++ - C++ 中的十六进制加法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20519576/