将 10 位 Int 转换为 Hex,然后将其转换为 C 中的值

标签 c arrays printf

对于 C 类的练习,我们得到一个整数数组,每个整数包含 10 位数字:

unsigned int Array[] = { 1310740313, 1966096717, 2621456717 };

我们被要求打印出一个字母、一个 255 范围内的值和另一个 65535 范围内的值。

我们使用的是小端机器,所以我们必须从右边读取。我可以通过在线转换来找出答案,但我无法使用 C 代码来找出答案。

我是否获取十六进制值,存储它,然后对每个字节执行 printf

我当前的代码如下所示:

for (int i = 0; i < ArraySize; i++)
{   
    printf("%x\n", Array[i]);
}

输出:

4e204f59, 7530414d, 9c40414d

如何将它们转换为字母和 2 个数字?

最佳答案

我认为您正在寻找这样的东西:

#include <stdio.h>

unsigned int Array[] = { 1310740313, 1966096717, 2621456717 };

int main()
{
    for (int i = 0; i < 3; i++) {
        printf("%c %d %d\n", Array[i] & 0xff, // last byte as char
                             (Array[i] & 0xff00) >> 8, // second byte as decimal
                             (Array[i] & 0xffff0000) >> 16); // last 2 byte as decimal
    }
    return 0;
}

输出

Y 79 20000                                                                                                                                                                           
M 65 30000                                                                                                                                                                           
M 65 40000

基本上屏蔽感兴趣的字节并将它们转移到正确的位置。

关于将 10 位 Int 转换为 Hex,然后将其转换为 C 中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60242729/

相关文章:

objective-c - 导入前对框架进行条件编译检查

c++ - 数组初始化的时间复杂度是多少?

c - 程序打印不正确的符号常量值

matlab - 在 Matlab 中,如何在任意大的矩阵上执行 fprintf 命令

c - 从图创建邻接表的两种实现

c++ - 宏 ((void(*)())0)() 是什么意思?

c - 如何在 C 或任何其他过程语言中使用 CQRS?

javascript - Gulp 任务读取多个 JSON 文件并合并为一个

javascript - 如何遍历对象数组并获取值

c - printf 未对齐输出