c - 为什么我的二进制数没有正确转换为十六进制?
问题描述
我试图通过先将二进制数转换为十进制,然后再转换为十六进制来将二进制数转换为十六进制数。
当我单独运行将十进制转换为十六进制的部分时,它工作正常,但每当我尝试同时运行两者时,它都不起作用?
for (returnBinary = length - 1; returnBinary > -1; returnBinary--) {
if (input[returnBinary] == '1') {
binDec = binDec + power(2, length - returnBinary - 1);
}
}
// decimal to hex
while (binDec != 0) {
remainder = binDec % 16;
if (remainder < 10) {
hexResult[returnBinary++] = 48 + remainder;
} else {
hexResult[returnBinary++] = 55 + remainder;
}
binDec = binDec / 16;
}
// print in reverse
printf("Your hexadecimal value is: 0x");
for (returnHex2 = returnHex; returnHex2 >= 0; returnHex2--) {
printf("%c", hexResult[returnHex2 - 1]);
}
每个部分单独工作都很好,但是放在一起就不起作用了。
EG:将十进制数 60 转换为十六进制可以正常工作,但是当转换 60 (111100) 的二进制等效值时,它给我的结果是 0xC,而它应该是 0x3C。
解决方案
跟踪它,我看到:
hex[-1] = 'C'
hex[0] = '3'
我怀疑你的意思是
hexResult[returnHex++] = 48 + remainder
代替
hexResult[returnBinary++] = 48 + remainder
假设 returnHex 初始化为零。
推荐阅读
- babeljs - (babel 插件)错误:.sourceMap 必须是布尔值、“内联”、“两者”或未定义
- vapor - 如何向 Vapor 响应添加标头(缓存控制)
- r - Rcpp犰狳中的样本
- android - 将代码转换为 Kotlin 后,不推荐使用 Getter
- excel - Excel 如果列包含特定单词,则分配一个值(或多个)
- python - Simpy:让出资源而不丢失队列中的位置
- redirect - 如何使用 mui-datatables npm 包将 onRowClick 重定向到另一个页面?
- sql - 带计数的蜂巢查询
- python - Python回溯算法解决数独问题
- pcsc - 如何使用 PC/SC 与阅读器通信