基本位操作
#include <iostream>
#include <map>
#include <queue>
#include <stdio.h>
using namespace std;
typedef unsigned long long uint64;
typedef unsigned char uint8;
void printBytes(uint64 *val, char *str) {
uint8* p = (uint8*)val;
char info[128] = { 0 };
for (int i = 0; i<8; i++) {
sprintf(info, "%s,%d", info, *(p + i));
}
printf("[%s] info: %s\n", str, info);
}
int main() {
uint64 vala = 1030;
uint64 valb = 2048;
printBytes(&vala, "00");
printBytes(&valb, "00");
uint64 total = ((vala & 0x00000000ffffffff) << 32) | (valb & 0x00000000ffffffff);
printBytes(&total, "11");
uint64 pid = (total & 0xffffffff00000000) >> 32;
printBytes(&pid, "22");
uint64 rid = total & 0x00000000ffffffff;
printBytes(&rid, "22");
printf("pid: %lld rid: %lld\n", pid, rid);
return 0;
}