我想将整数拆分为数字,然后将每个数字转换为 ASCII(在 C 编程语言中)。
例子:
int x = 0xABC
/* split integers */
int x1 = 0xA
int x2 = 0xB
int x3 = 0xC
/* convert integers to ASCII */
int x1 = 0x41
int x2 = 0x42
int x3 = 0x43
此外,如果整数只有 2 位数字(十六进制),我仍然需要 3 次拆分:
int y = 0xBC
/* split integers */
int y1 = 0x0
int y2 = 0xB
int y3 = 0xC
.
.
.
非常感谢!
最佳答案
使用数学:x = x₁ · 16² + x₂ · 16 + x₃
使用查找表查看数字是什么:
static const char hex[16] = "0123456789ABCDEF";
y1 = hex[x1];
...
我不会给你一个完整的解决方案,因为这是一个与作业相关的问题。
完整解决方案(不太容易理解):
// Divide by 16^n and take the modulo 16:
int x1 = (x >> 8) & 0xF; // == (x/256) % 16
int x2 = (x >> 4) & 0xF; // == (x/16) % 16
int x3 = (x >> 0) & 0xF; // == x % 16
int y1 = x1 < 10 ? x1+'0' : x1+'A'-10;
int y2 = x2 < 10 ? x2+'0' : x2+'A'-10;
int y3 = x3 < 10 ? x3+'0' : x3+'A'-10;
关于C:拆分整数并将其转换为 ASCII,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11745798/