首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从一个长整型中提取四个无符号短整型?

问如何从一个长整型中提取四个无符号短整型?
EN

Stack Overflow用户
提问于 2008-09-29 10:41:43
回答 3查看 2.4K关注 0票数 5

假设我有一个长整型,想要取它的位,并用它构造四个无符号的短整型。

在这里,特定的顺序并不重要。

我通常知道我需要移位并截断到无符号短整型的大小。但我想我可能在什么地方犯了个奇怪的错误,所以我问了。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2008-09-29 10:44:59

代码语言:javascript
复制
#include <stdint.h>
#include <stdio.h>

union ui64 {
    uint64_t one;
    uint16_t four[4];
};

int
main()
{
    union ui64 number = {0x123456789abcdef0};
    printf("%x %x %x %x\n", number.four[0], number.four[1],
                            number.four[2], number.four[3]);
    return 0;
}
票数 11
EN

Stack Overflow用户

发布于 2008-09-29 10:48:10

代码语言:javascript
复制
(unsigned short)((((unsigned long long int)value)>>(x))&(0xFFFF))

其中value是您的long long int,x是0、16、32或48表示四个短片。

票数 3
EN

Stack Overflow用户

发布于 2008-09-29 10:45:57

代码语言:javascript
复制
union LongLongIntToThreeUnsignedShorts {
   long long int long_long_int;
   unsigned short int short_ints[sizeof(long long int) / sizeof(short int)];
};

这应该可以做你想做的事情,而不需要浪费在位移位上。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/148225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档