Zen*_* Qu 4 c type-conversion endianness unix-timestamp
我有一个大小为6的unsigned char数组.字节数组的内容是一个整数(自Unix时间以来的4096*秒).我知道字节数组是big-endian.
C中是否有一个库函数可用于将此字节数组转换为int_64,还是必须手动执行?
谢谢!
PS:以防你需要更多信息,是的,我正在尝试解析Unix时间戳.这是我处理的时间戳的格式规范.
C99实现可能会提供uint64_t(如果没有本机固定宽度整数正好是64位,则不必提供它),在这种情况下,您可以使用:
#include <stdint.h>
unsigned char data[6] = { /* bytes from somewhere */ };
uint64_t result = ((uint64_t)data[0] << 40) |
((uint64_t)data[1] << 32) |
((uint64_t)data[2] << 24) |
((uint64_t)data[3] << 16) |
((uint64_t)data[4] << 8) |
((uint64_t)data[5] << 0);
Run Code Online (Sandbox Code Playgroud)
如果您的C99实现没有提供,uint64_t您仍然可以使用unsigned long long 或(我认为)uint_least64_t.无论主机的本机字节顺序如何,这都将起作用.
| 归档时间: |
|
| 查看次数: |
3360 次 |
| 最近记录: |