c - 如何将一个 64 位数字拆分为八个 8 位值?

标签 c types bit-manipulation

有没有一种简单的方法可以将一个 64 位(unsigned long long)变量拆分为八个 int8_t 值?

例如:

//1001000100011001100100010001100110010001000110011001000110011111
unsigned long long bigNumber = 10455547548911899039;
int8_t parts[8] = splitULongLong(bigNumber);

parts 类似于:

[0] 10011111

[1] 10010001

[2] 00011001

...

[7] 10010001

最佳答案

 {
   uint64_t v= _64bitVariable;
   uint8_t i=0,parts[8]={0};
   do parts[i++]=v&0xFF; while (v>>=8);
 }

关于c - 如何将一个 64 位数字拆分为八个 8 位值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20041899/

相关文章:

c - 哪个 C99 编译器(Clang 与 GCC)更接近 const 结构字段的标准?

oop - 在 Haskell 中创建绑定(bind)到记录的方法

c - 了解以下行为

c++ - 编译时检查右移是否是有符号类型的算术

在 bash 脚本中检查 C 程序的返回值?

c - arr[0] = arr[1] = C 中的值是不好的做法吗?

c - 了解布隆过滤器

c++ - C++ 中是否存在比 long long int 更大的类型?

ios - 如何制作一个包含类型的数组?

c - 在 long 中找到最重要的设置位