gpt4 book ai didi

c - 将 unsigned int 拆分为 unsigned char[] 时出错

转载 作者:太空宇宙 更新时间:2023-11-04 03:42:18 25 4
gpt4 key购买 nike

我正在尝试将一个无符号整数拆分为多个位置:例如,数字 234 变成无符号字符数组 {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);

}

最佳答案

要将数字拆分为 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);
}

关于c - 将 unsigned int 拆分为 unsigned char[] 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27493037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com