1. 程式人生 > 其它 >將一個64位整數U64轉變為4個16位整數U16(或U32轉為4個U8)

將一個64位整數U64轉變為4個16位整數U16(或U32轉為4個U8)

技術標籤: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