將一個64位整數U64轉變為4個16位整數U16(或U32轉為4個U8)
阿新 • • 發佈:2020-12-24
技術標籤:C++
今天需要將一個U64時間戳轉化為4個U16,記錄一下
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
unsigned long long int x = 978328074055923918;
printf("before transform: %lld\n", x);
unsigned long long int i, a[4];
printf("U16: \n");
for (i = 0; i < 4; i++)
{
a[i] = (x >> (i * 16)) & 0xFFFF;
printf("%x\n", a[i]);
}
unsigned long long int y = a[0] + a[1] * (unsigned long long)(pow(2, 16)) + a[2] * (unsigned long long)(pow(2, 32)) + a[3] * (unsigned long long)(pow(2, 48));
printf("after transform: %lld\n", y);
system("pause");
return 0;
}
執行結果:
將一個32位數字U32轉換為4個8位整數U8:
只需將上述程式碼中的for迴圈改為:
for (i = 0; i < 4; i++)
{
a[i] = (x >> (i * 6)) & 0xFF;
printf("%x\n", a[i]);
}
參考:https://blog.csdn.net/he__yuan/article/details/80709609