C:拆分整数并将其转换为 ASCII

标签 c integer ascii uart

我想将整数拆分为数字,然后将每个数字转换为 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/

相关文章:

c - C 中的 Char 问题

c - 使用 strcat() 连接从 void 函数收集的两个值

ruby - StringIO 实例改变原始字符串

c - 使用 termios.h 在 C 程序中询问用户输入时如何使箭头键和退格键正常工作?

validation - 为什么有效 ("integer","1,5") = YES?

比较两个未排序 int 数组的代码。 C

java - int 和 Integer 的区别

python - 在 Python 中从 Ascii 转换某些特殊字符时遇到问题

c - visual studio 中的 Scanf 不接受多例字符

使用指针数组调用函数