我有向我发送UTC日期这种格式的嵌入式设备(日期是4个字节):编码解码字节
buffer.push_back((BYTE)(time_utc & 0x000000FF));
buffer.push_back((BYTE)((time_utc & 0x0000FF00) >> 8));
buffer.push_back((BYTE)((time_utc & 0x00FF0000) >> 16));
buffer.push_back((BYTE)((time_utc & 0xFF000000) >> 24));
在我接收到的字节,并将它们存储在socket_buf
,从index启动服务器0-3,并使用下面的逻辑
mypkt.dateTime = ((socket_buf[0] << 24) +
(socket_buf[1 ] << 16) + socket_buf[2] << 8) +
(socket_buf[3] << 0));
解码它,但我不知道如果我正确地解码,因为我得到的日期是不正确的。任何人都可以向我建议解码它的正确方法吗?我使用Linux命令解码日期(16711840是我通过解码得到的数字):
#date -d @16711840
这两台机器是排序? –
我认为这与网络中的字节排序有关。网络字节顺序是big endian,大多数intel处理器都是little endian =>这是错误发生的地方。你看过C函数'htons()'和'ntohs()'吗? – jcxz
但我也发送其他数据,我正准备提取正确的,我更倾向于我的逻辑,因为我正在从socket_buf正确解码它。我不确定是否需要按照设备上的操作进行操作。 – Rohit