将 10 位 Int 转换为十六进制,然后将其转换为 C 中的值



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

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

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

我们正在使用一个小端序机器,所以我们必须从右边阅读。我可以通过在线转换来找出答案,但我无法使用 C 代码弄清楚。

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

我当前的代码如下所示:

for (int i = 0; i < ArraySize; i++)
{   
printf("%xn", 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 %dn", 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

基本上掩盖了感兴趣的字节并将它们移动到正确的位置。

相关内容

  • 没有找到相关文章

最新更新