zoukankan      html  css  js  c++  java
  • 字符串与十六进制数的相互转换

    一、字符串转换为十六进制数

    int convert_str_to_hex(uint8_t *str, int32_t str_len, uint8_t *out_str, int32_t *out_len)
    {
        uint32_t i = 0 ;
        uint8_t ch1 = 0, ch2 = 0;
        if(str_len * 2 + 2 > *out_len)
        {
            return -1;
        }
        sprintf(out_str, "0x");
        
        for(i = 0; i < str_len; i++)
        {
            ch1 = (str[i] & 0xf0) >> 4;
            ch2 = (str[i] & 0x0f);
    
            ch1 += ((ch1 > 9) ? 0x57 : 0x30);
            ch2 += ((ch2 > 9) ? 0x57 : 0x30);
    
            out_str[2*i + 2] = ch1;
            out_str[2*i + 3] = ch2;
        }
    
        out_str[str_len * 2 + 2] = 0;
        *out_len = str_len * 2 + 2;
    
        return 0;
    }    

    二、十六进制数转换为字符串

    int convert_hex_to_str(uint8_t *src, uint32_t len, uint8_t *dest)
    {
        uint32_t i = 0 ;
        uint8_t ch1, ch2;
        if(len % 2 != 0)
        {
            printf("%s,%d - in convert_hex_to_str(), len:%u % 2 != 0!
    ", __FILE__, __LINE__,len);
            return -1;
        }
        
        for(i = 0; i < len/2; i++)
        {
            ch1 = src[i*2];
            ch2 = src[i*2+1];
    
            ch1 -= ((ch1 > (9+0x30)) ? 0x57 : 0x30);
            ch2 -= ((ch2 > (9+0x30)) ? 0x57 : 0x30);
    
            dest[i] = (ch1<<4)|ch2;
        }
    
        return 0;
    }
  • 相关阅读:
    Jmeter(十四)
    Jmeter(十一)
    Jenkins
    对前端模块化应如何理解
    Vue面试相关
    vue-router使用总结
    Vue全家桶__Vue-router&Vuex
    Vue-cli3开发单文件
    Vue_组件化开发
    Vue_问题梳理
  • 原文地址:https://www.cnblogs.com/XNQC1314/p/12604501.html
Copyright © 2011-2022 走看看