如何将两个4字节合成1个8字节呢?

时间:2021-02-19 17:05:19
unsigned long long *FileSize

hiFileSize = 5;
*FileSize[4] = hiFileSize;
//*FileSize <<= 32;
*FileSize = (DWORD)loFileSize;


我试过两种方法了,但是都不行

应该怎么做才能把它合成呢?

4 个解决方案

#1


unsigned long long FileSize
hiFileSize = 5;
*((unsigned long *)&FileSize + 0) = loFileSize;
*((unsigned long *)&FileSize + 1) = hiFileSize;

FileSize即可用。

当然,这里不得不说一下little endian和big endian。
上述代码在little endian的平台上OK。

#2


看MAKEWORD,MAKELONG的实现,照葫芦画瓢就是了

#3


引用 2 楼  的回复:
看MAKEWORD,MAKELONG的实现,照葫芦画瓢就是了


能举个例子吗?

#4


MAKEDWORDLONG(l, h) ((ULONGLONG)(((DWORD)(l)) | ((DWORDLONG)((DWORD)(h))) << 32))

#1


unsigned long long FileSize
hiFileSize = 5;
*((unsigned long *)&FileSize + 0) = loFileSize;
*((unsigned long *)&FileSize + 1) = hiFileSize;

FileSize即可用。

当然,这里不得不说一下little endian和big endian。
上述代码在little endian的平台上OK。

#2


看MAKEWORD,MAKELONG的实现,照葫芦画瓢就是了

#3


引用 2 楼  的回复:
看MAKEWORD,MAKELONG的实现,照葫芦画瓢就是了


能举个例子吗?

#4


MAKEDWORDLONG(l, h) ((ULONGLONG)(((DWORD)(l)) | ((DWORDLONG)((DWORD)(h))) << 32))