美文网首页
iOS二进制高位在后面

iOS二进制高位在后面

作者: 大大东 | 来源:发表于2021-07-15 12:13 被阅读0次

    最近和服务端做了socket通信,处理packet时遇到了二进制高位不统一的问题,

    // iOS中len的二进制为0xff000000 (高位在后面)
    // 但是传递到服务端 转换出的数字会变得非常大 
    uint32_t len = 255;
    //  所以需要转换为 0x000000ff(高位在前面) 再传递到服务端 即:
    len = htonl(len);
    //  反过来转换用 ntohl()
    

    后来查了下,其实是不同平台之间通信时就需要注意这个问题,有两个名词为网络字节序主机字节序

    下面摘自百度百科:

    [网络字节序]转化为[主机字节序]时,一定要注意是否需要转换。网络字节序是确定的。

    [网络字节顺序]是TCP/IP中规定好的一种数据表示格式,它与具体的[CPU类型]、[操作系统]等无关,从而可以保证数据在不同主机之间传输时能够被正确解释。网络字节顺序采用big-endian(大端)排序方式。

    相关文章

      网友评论

          本文标题:iOS二进制高位在后面

          本文链接:https://www.haomeiwen.com/subject/izvppltx.html