有2种方式可以实现:
第一种方式:
数据类型强制转换,需要注意平台是大端还是小端 ,如果平台是大端,那么字节数组存放的字节顺序是高字节在前;如果平台是小端,那么字节数组存放的字节顺序是低字节在前。
此例程需要在小端模式的平台上运行
/**
* @brief None
* @param None
* @retval None
*/
int main( void )
{
uint8_t ByteDatasLittleEnd[8] = {0x06, 0x4E, 0xE7, 0xDF, 0x72, 0x01, 0x00, 0x00 };
uint64_t u64Value;
u64Value = *(uint64_t *)ByteDatasLittleEnd;
printf("u64Value:%lld\r\n", u64Value );
}
运行结果:
u64Value:1592894377478
第二种方式:
通过移位实现,和平台的大小端无关,如果字节数组里存放的字节顺序是高字节在前,则使用ByteToU64BigEnd()函数;如果字节数组里存放的字节顺序是低字节在前,则使用ByteToU64LittleEnd()函数。
#include "stdint.h"
/**
* @brief Little end format.
* @param None
* @retval None