当前位置: 首页 > article >正文

linux 网络序

大小端判断
  • 根据整形二进制显示判断

    • 高位字节存放在内存中高地址处,低位字节存放在内存中低地址处则是小端;
    • 高位字节存放在内存中低地址处,低位字节存放在内存中高地址处则是大端;
    typedef struct Test{
    	int a;
    	int b;
    }Test_t;
    
    Test_t t = {.a=5,.b=6};
    // t.a二进制显示: 00000000 00000000 00000000 00000101
    // t.b二进制显示: 00000000 00000000 00000000 00000110
    // 查看t.a或t.b在内存中的二进制布局
    
    gcc -g test.c - test
    gdb ./test
    x/4tb &t.a
    0x7fffffffeb38: 00000101        00000000        00000000        00000000
    # 低字节00000101在内存中存放在低位地址(内存显示左到右是地址递增的),所以是小端
    # t.b同理
    x/4tb &t.b
    0x7fffffffeb3c: 00000110        00000000        00000000        00000000
    
    
    // 衍生出将多字节整形转单字节来判断大小端
    short int a = 3; // 00000000 00000011
    char c = (char)a;
    printf("%d\n", c); // 若c是0,则是大端,是3则小端
    
  • 在将ip字符串转网络序存储时

    char ipv4[] = "192.168.0.2";
    long nip = 0;
    inet_pton(AF_INET, ipv4, &nip);
    
    long uip = ntohl(nip);
    printf("%ld, %ld\n", uip, nip); // 若两者一样,则是大端(网络序是大端)
    x/4tb &nip
    0x7fffffffde08: 11000000        10101000        00000000        00000010
    
    x/4tb &uip
    0x7fffffffde30: 00000010        00000000        10101000        11000000 
    
    

http://www.kler.cn/a/328578.html

相关文章:

  • 集群聊天服务器(13)redis环境安装和发布订阅命令
  • 高效工具推荐:基于WebGPU的Whisper Web结合内网穿透远程使用指南
  • 力扣-Mysql-3322- 英超积分榜排名 III(中等)
  • SpringBoot中Maven的定义及国内源配置教程,实现自动获取Jar包
  • 大模型呼叫中心,如何建设呼入机器人系统?
  • 实用教程:如何无损修改MP4视频时长
  • 快速实现AI搜索!Fivetran 支持 Milvus 作为数据迁移目标
  • 【Linux】进程概念-2
  • 给自己的项目(vue3)中添加 下雪/樱花飘落的背景
  • 复写零——双指针算法
  • 自制CANTool_DBC差异比较工具DBCCompare_原理介绍(四)
  • 【架构】prometheus+grafana系统监控
  • 鸿蒙开发知识点速记全解
  • Python数据分析工具: Scikit-learn用法示例
  • android.bp cc_test
  • 木舟0基础学习Java的第三十一天(SpringMVC,xml式和注解式开发,携带数据,取值,视图解析)
  • Selenium(1)-webUI自动化环境部署,基本元素定位
  • 大学学校用电安全远程监测预警系统
  • Verilog基础:时序调度中的竞争(四)(描述时序逻辑时使用非阻塞赋值)
  • 车辆重识别(注意力 U-Net:学习在哪些区域寻找胰腺)论文阅读2024/10/01
  • 单体到微服务架构服务演化过程
  • 无人机跟踪
  • [网络]抓包工具介绍 tcpdump
  • 15.面试算法-树基础
  • 【深度学习】低维向量映射到高维空间的方法
  • 服装分类检测系统源码分享