我正在尝试将unsigned int拆分为数字到位:例如,数字234变为unsigned char数组{0,0,0,2,3,4},我看到奇怪的效果,我是不确定我是以正确的方式做到的,还有更好的吗?
这是我现在使用的代码:
void display_decl(unsigned int j)
{
unsigned char lst[6];
lst[5] = j & 0x0f;
lst[4] = j >> 4 & 0x0f;
lst[3] = j >> 8 & 0x0f;
lst[2] = j >> 12 & 0x0f;
lst[1] = j >> 16 & 0x0f;
lst[0] = j >> 20 & 0x0f;
display_digits(lst);
}
答案 0 :(得分:1)
要将数字拆分为char
代码需要使用预期的基数和空字符终止处理为字符串。
#include <limits.h>
void display_decl(unsigned int j) {
char lst[sizeof j * CHAR_BIT + 1];
unsigned base = 10; // or 16 or any base 2 to 16
char *p = &lst[sizeof lst] - 1;
*p = '\0';
do {
p--;
*p = "0123456789ABCDEF"[j%base];
j /= base;
} while (j > 0);
display_string(p);
}