在TEE环境下,o可能由于安全问题,无法使用htobe64函数,所以使用另一种方式来完成这个函数的转换功能:
#include <iostream>
#include <stdio.h>
#include <stdarg.h>
#include <dirent.h>
#include <errno.h>
#include <endian.h>
#include <inttypes.h>
#include <stdint.h>
using namespace std;
static uint32_t convert_x(uint32_t x)
{
return x>>24 | x>>8&0xff00 | x<<8&0xff0000 | x<<24;
}
//这个函数完成和htobe64一样的功能
static uint64_t convert(uint64_t x)
{
return convert_x(x)+0ULL<<32 | convert_x(x>>32);
}
int main()
{
struct timespec ts;
clock_gettime(CLOCK_MONOTONIC, &ts);
uint64_t times = (uint64_t)((uint64_t)ts.tv_sec * 1000 + ts.tv_nsec / 1000000);
uint64_t timestamp =
htobe64(times);
unsigned char out[8]={0};
printf("times-->%"PRIu64"\n",convert(times));
printf("timestamp-->%"PRIu64"\n",timestamp);
printf("timestampqq-->%"PRIu64"\n",htobe64((uint64_t)ts.tv_sec * 1000 + ts.tv_nsec / 1000000));
return 0;
}