1. 动态的10进制字符串转16进制ASSIC

#include <stdio.h>
#include <string.h>
#include <malloc.h>
char *DecToHex(char *pHex,char *pDec,int Declen)
{
    int       i,Hexlen = Declen *2;
    char        hex[] = "0123456789";
    pHex = (char *)malloc(sizeof(char)*Hexlen);
    for (i = 0; i < Declen; i++)
    {
        *pHex++ = hex[*pDec>>4];
        *pHex++ = hex[*pDec++ & 0x0F];
    }
    *pHex = '\0';
    return pHex -Hexlen;
}
int main()
{
    char Dec[] = "01234";
    char *pHex = NULL;
    printf("-------------10进制字符串----------\n");
    printf("%s\n",Dec);
    printf("-------------16进制字符串----------\n");
    printf("%s\n", DecToHex(pHex,Dec,strlen(Dec)));
    printf("\n\n\n");
}

2. 静态的10进制字符串转16进制ASSIC

#include <stdio.h>
#include <string.h>
#include <malloc.h>
char *DecToHex(char *pHex,char *pDec,int Declen)
{
    int       i,Hexlen = Declen *2;
    char        hex[] = "0123456789";
    for (i = 0; i < Declen; i++)
    {
        *pHex++ = hex[*pDec>>4];
        *pHex++ = hex[*pDec++ & 0x0F];
    }
    *pHex = '\0';
    return pHex -Hexlen;
}
int main()
{
    char Dec[] = "01234";
    char Hex[11];
    printf("-------------10进制字符串----------\n");
    printf("%s\n",Dec);
    printf("-------------16进制字符串----------\n");
    printf("%s\n", DecToHex(Hex,Dec,strlen(Dec)));
    printf("\n\n\n");
}

3. ASSIC字符串转16进制字符串

使用函数需要注意的是返回的串是在堆上通过 calloc 分配的,所以,记得使用完返回值释放该块,并且将指向该块的指针 =NULL 。

char *chstohex ( char* chs )
{
    char hex[16] = { '0', '1', '2', '3', '4', '5', '6', \
        '7', '8','9', 'A', 'B', 'C', 'D', 'E', 'F'
    };

int len = strlen ( chs );
    char* ascii = NULL ;
    ascii = (char*)calloc ( len * 3 + 1, sizeof(char) );            // calloc ascii
    
    int i = 0;
    while( i < len )
    {
        ascii[i*2] = hex[(int)( (char)chs[i] / 16 )] ;
        ascii[i*2 + 1] = hex[(int)( (char)chs[i] % 16 )] ;
        ++i;
    }

return ascii;                    // ascii 返回之前未释放
}

4. 16进制字符串转ASSIC字符串

使用函数需要注意的是返回的串是在堆上通过 calloc 分配的,所以,记得使用完返回值释放该块,并且将指向该块的指针 =NULL 。

char *hextochs ( char* ascii )
{
    int len = strlen ( ascii ) ;
    if( len%2 != 0 )
        return NULL ;
    char *chs = NULL ;
    chs = (char*)calloc( len / 2 + 1, sizeof(char) );                // calloc chs

int  i = 0 ;
    char ch[2] = {0};
    while( i < len )
    {
        ch[0] = ( (int)ascii[i] > 64 ) ? ( ascii[i]%16 + 9 ) : ascii[i]%16 ;
        ch[1] = ( (int)ascii[i + 1] > 64 ) ? ( ascii[i + 1]%16 + 9 ) : ascii[i + 1]%16 ;
        
        chs[i/2] = (char)( ch[0]*16 + ch[1] );
        i += 2;
    }

return chs ;            // chs 返回前未释放
}

字符串10进制、16进制、ASSIC的互转相关推荐

  1. 【python初级】10进制与2进制8进制16进制的转换

    [python初级]10进制与2进制8进制16进制的转换 背景 代码 背景 在做串口通信的时候发送的字符串都是16进制编码的. 本博客就介绍10进制与2.8.16进制的相互转换. 10进制是我们生活中 ...

  2. 把ASCII码的字符串转为数字的16进制

    /* 函数名称:AsciiStrToHexArray 功能:把ASCII码的字符串转为数字的16进制 参数dst:存储16进制数组数据指针 参数src:存储ASCII码的字符串指针 返回值:16进制的 ...

  3. [工具]-C语言中字符串的形式打印16进制数据

    C语言中字符串的形式打印16进制数据. 这样写,输出更直观些 #define PRINT_BUF_MAX (32) #define TAG_STRING_MAX (32) static void pr ...

  4. 2进制 , 8进制 , 10进制 , 16进制 , 介绍 及 相互转换 及 快速转换

    为什么要使用进制数 数据在计算机中的表示,最终以二进制的形式存在 , 就是各种 <黑客帝国>电影中那些 0101010- 的数字 ; 我们操作计算机 , 实际 就是 使用 程序 和 软件 ...

  5. C# 数据互转 16进制16进制字符串字符串

    1.字符串过滤 or 提取字符串 提取字符串:在C# .net开发中 "ToString()"方法是最常见的,用于将文本转为字符串: 字符串过滤:在处理字符串数据或者hex数据时, ...

  6. 2进制10进制16进制负数的转换

    2进制10进制16进制之间的转换,包含负数. 前言:转换原则 16进制[A-F]与10进制.2进制转义表 一:2进制转16进制 二: 2进制中的负数如何转换成16进制 1.先写成正数的二进制 2. 取 ...

  7. c语言2进制16进制 表格,标题:整数进制转换(十六进制,十进制,二进制)--表格法...

    标题:整数进制转换(十六进制,十进制,二进制)--表格法 在计算机里,最基本的存储单位为字节(Byte,常说的大B),1个字节包含8位(bit,常说的小b).计算机的数据就是一个字节一个字节的形式存储 ...

  8. C语言中转义字符的使用——8进制16进制转义字符

    文章目录 C语言中8进制16进制转义字符的使用 什么是转义字符 常用的转义字符见下表 八进制与十六进制转义字符的使用 C语言中8进制16进制转义字符的使用 什么是转义字符 C语言允许一种特殊形式的字符 ...

  9. java中 8进制 10进制 2进制 16进制 相互转换

    十进制转成十六进制: Integer.toHexString(int i) 十进制转成八进制 Integer.toOctalString(int i) 十进制转成二进制 Integer.toBinar ...

  10. python将16进制字符串转换为整数_Python 16进制与字符串的转换

    电脑上装了Python2.7和3.3两个版本,平时运行程序包括在Eclipse里面调试都会使用2.7,但是由于某些原因在cmd命令行中输入python得到的解释器则是3.3, 一直没对此做处理,因为这 ...

最新文章

  1. 时装搭配_时装搭配修身T恤搭配紧身牛仔裤,时尚的穿搭,尽显时尚领导者
  2. Java 如何优雅的实现时间控制
  3. innerHTML与innerText
  4. linux 拆分文件 多个,linux – 如何拆分文件并保留每个部分的第...
  5. 左手价格战右手结盟 巨头加码云计算市场洗牌在即
  6. centos7 network网络服务重启报错failed to start lsb
  7. python模块time_Python模块:time模块详解(转)
  8. ATL offsetofclass 的工作原理
  9. mysql增删改查扩展_MySQL(增删改查补充)
  10. 05-01 docker 介绍
  11. JS----正则表达式
  12. 老板看似表面风光,可能还没有员工赚得多
  13. 的谐音非诚勿扰_《菲诚勿扰》全网通缉24位女嘉宾
  14. react组件卸载调用的方法_React组件如何还能跑得再快一点
  15. eclipse安装ADT插件
  16. CentOS在VMware上的安装和配置以及Xshell和Xftp的连接
  17. python字典保存为文件_关于python:如何将字典列表保存到文件中?
  18. [USACO10HOL]牛的政治Cow Politics
  19. 微信公众号01: ase实现access_token的存储和被动刷新
  20. 计算机的码片是指什么作用,码片速率

热门文章

  1. 李兰娟院士等新冠病毒鸡尾酒疗法研究取得新进展
  2. 国际上首次报道的非人灵长类胰岛衰老的单细胞转录组图谱
  3. Moody Photoshop Panel for mac(ps专业色彩调色扩展面板)
  4. Forbidden You don't have permission to access / on this server.解决方法
  5. java绘制半透明图片_如何使绘制的图像在Java中透明
  6. pythongui界面复选框数值选择并求和_如何使用Python从图像中分离复选框按钮和复......
  7. ThinkPHP6项目基操(13.实战部分 项目中的自定义异常处理总结 错误页面API错误)
  8. Java笔记-获取自己资源文件中的配置文件(打包成jar包为其他包所引用也能获取)
  9. Spring Boot笔记-logback-spring.xml获取application.properties中的变量
  10. Java笔记-Spring Boot JDBC连接Oracle数据库