zoukankan      html  css  js  c++  java
  • 将四字节hex形式IP转换成点分十进制式

    1、需求描述

    将四字节的hex形式IP如

    x0AxA8x01xB5 转换成 点分十进制形式如

    “10.168.1.181”

    2、代码实现

    //
    // convert one byte hex to int str
    // byte_hex: input byte hex
    // outdata: output converted int data
    // int_str_len: the length of the int str
    //
    void byte_hex2int_str(const u8 byte_hex, u8 *outdata, u8 *int_str_len)
    {
        u8 i = 0, m = 0;
        u8 Adata, Bdata;
        u8 tmp_res[20] = {0};    
        
        Adata = byte_hex;
        while (1)
        {
            Bdata = (Adata % 10);
            Adata = (Adata / 10);
            tmp_res[i] = Bdata;
            i++;
            if (Adata == 0)
            {
                break;
            }
        }  
        *int_str_len = i;
        
        for (m = 0; m < i; m++)
        {
            *(outdata + m) = (tmp_res[i-1-m] + 0x30);     
        }
    }
    
    //
    // function: convert ip hex to string
    //
    void ip_hex2str(u8 *out_ip_buf, const u8 * in_hex_buf)
    {
        u8 int_str_len = 0x00;
        u8 i = 0x00;
        
        byte_hex2int_str(in_hex_buf[0], out_ip_buf+i, &int_str_len);
        i += int_str_len;
        out_ip_buf[i]='.';
        i++;
        
        byte_hex2int_str(in_hex_buf[1], out_ip_buf+i, &int_str_len);
        i += int_str_len;
        out_ip_buf[i]='.';
        i++;
        
        byte_hex2int_str(in_hex_buf[2], out_ip_buf+i, &int_str_len);
        i += int_str_len;
        out_ip_buf[i]='.';
        i++;
        
        byte_hex2int_str(in_hex_buf[3], out_ip_buf+i, &int_str_len);    
    }
  • 相关阅读:
    MySQL数据库----数据类型
    MySQL数据库----安装
    I2c串行总线组成及其工作原理
    感慨
    液晶操作
    串口通信
    9.19AD和DA操作
    9.19键盘的应用
    9.17键盘的操作
    9.15学习笔记
  • 原文地址:https://www.cnblogs.com/aqing1987/p/4270511.html
Copyright © 2011-2022 走看看