转载自:http://qing.blog.sina.com.cn/1820422183/6c81702733001qvk.html

1.c版

int hexcharToInt(char c)
{ 
        if (c >= '0' && c <= '9') return (c - '0');
        if (c >= 'A' && c <= 'F') return (c - 'A' + 10);
        if (c >= 'a' && c <= 'f') return (c - 'a' + 10);
   return 0;
}

void hexstringToBytes(char* hexstring,char* bytes,int hexlength)
{         
   cout<<"length is :"<<sizeof(hexstring)/sizeof(char)<<endl;
        for (int i=0 ; i <hexlength ; i+=2) {
            bytes[i/2] = (char) ((hexcharToInt(hexstring[i]) << 4)
                                | hexcharToInt(hexstring[i+1]));
        }
}

void bytesToHexstring(char* bytes,int bytelength,char *hexstring,int hexstrlength)
{
   char str2[16] = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
   for (int i=0,j=0;i<bytelength,j<hexstrlength;i++,j++) 
   {
            int b;
            b = 0x0f&(bytes[i]>>4);
            char s1 = str2[b];
       hexstring[j] = s1;    
            b = 0x0f & bytes[i];
       char s2 = str2[b];
j++;
            hexstring[j] = s2;    
   }
}

int main()
{
   char csh[5] = {'1','2','3','4','\0'};
   cout<<"csh length is :"<<strlen(csh)<<endl;
   char ch[4] = {'1','2','3','4'};
   char str1[8];
   bytesToHexstring(ch,4,str1,8);
   for(int k=0;k<8;k++)
   printf("hex:%x\n",str1[k]);
   char bte[4] ; 
   hexstringToBytes(str1,bte,8);
   for(int m=0;m<4;m++)
   printf("bytes:%x\n",bte[m]);
   return 1;
}

2.c++版
int hexCharToInt(char c)
{ 
        if (c >= '0' && c <= '9') return (c - '0');
        if (c >= 'A' && c <= 'F') return (c - 'A' + 10);
        if (c >= 'a' && c <= 'f') return (c - 'a' + 10);
return 0;
}

char* hexstringToBytes(string s)
{         
        int sz = s.length();
        char *ret = new char[sz/2];
        for (int i=0 ; i <sz ; i+=2) {
            ret[i/2] = (char) ((hexCharToInt(s.at(i)) << 4)
                                | hexCharToInt(s.at(i+1)));
        }
return ret;
}

string bytestohexstring(char* bytes,int bytelength)
{
  string str("");
  string str2("0123456789abcdef"); 
   for (int i=0;i<bytelength;i++) {
     int b;
     b = 0x0f&(bytes[i]>>4);
char s1 = str2.at(b);
str.append(1,str2.at(b));    
     b = 0x0f & bytes[i];
     str.append(1,str2.at(b));
char s2 = str2.at(b);
   }
   return str;
}

int main()
{
   
   char ch[5] ={'1','2','3','4','5'};
   string str = bytestohexstring(ch,5);
   char *chs =new char[5];
   strcpy(chs,str.c_str());
   cout<<endl;
   cout<<str<<endl;
   for(int i = 0;i<10;i++)
   {
      printf("\n%x",chs[i]);
   }
   cout<<endl;
   char* sdf = hexstringToBytes(str);
    for(int j = 0;j<5;j++)
   {
      printf("\n%x",sdf[j]);
   }
   return 1;
}

3.java版
  public int hexCharToInt(char c) {
        if (c >= '0' && c <= '9') return (c - '0');
        if (c >= 'A' && c <= 'F') return (c - 'A' + 10);
        if (c >= 'a' && c <= 'f') return (c - 'a' + 10);
        throw new RuntimeException ("invalid hex char '" + c + "'");
    }

    public byte[]
    hexStringToBytes(String s) {
        byte[] ret;
        if (s == null) return null;
        int sz = s.length();
        ret = new byte[sz/2];
        for (int i=0 ; i <sz ; i+=2) {
            ret[i/2] = (byte) ((hexCharToInt(s.charAt(i)) << 4)
                                | hexCharToInt(s.charAt(i+1)));
        }
        return ret;
    }

    public String
    bytesToHexString(byte[] bytes) {
        if (bytes == null) return null;
        StringBuilder ret = new StringBuilder(2*bytes.length);
        for (int i = 0 ; i < bytes.length ; i++) {
            int b;
            b = 0x0f & (bytes[i] >> 4);
            ret.append("0123456789abcdef".charAt(b));
            b = 0x0f & bytes[i];
            ret.append("0123456789abcdef".charAt(b));
        }
        return ret.toString();
    }

十六进制字符串 char 数组 转换 c/c++/java的更多相关文章

  1. 将16进制unsigned char数组转换成整数

    /** * 将unsigned char数组转换成long long数值 * {0x00 0x00 0x20 0x00}转换之后得到8192 * * @param str 数组 * @param le ...

  2. javascript字符串与数组转换汇总

    本文给大家分享的是Js中字符串转换成数组,数组转换成字符串的函数,十分的简单实用,有需要的小伙伴可以参考下. 数组转字符串 1.join()方法 ? 1 2 3 4 var s= ["a&q ...

  3. QString 和char数组转换(转)

    在qt开发过程中经常遇到QString类和char数组进行转换,在此记录一下: QString->char数组 1 2 3 QString str="12fff"; QByt ...

  4. string子串匹配(用string自带函数,不涉及char数组转换)

    using namespace std; #include <iostream> #include<string> //第1种,用string自带的s.subdtr()截取任意 ...

  5. C#字符串与char数组互转!

    字符串转换成Char数组string str="abcdefghijklmnopqretuvwxyz";char[] chars=str.ToCharArray(); char数组 ...

  6. Java 基础类型转换byte数组, byte数组转换基础类型

    Java 基础类型转换byte数组, byte数组转换基础类型 Java类型转换 java类对象转化为byte数组

  7. python 字节数组和十六进制字符串互转

    . 字节数组 --> 十六进制字符串 >>> a = 'ab' >>> a.encode('hex') ' . 十六进制字符串 --> 字节数组 > ...

  8. delphi char数组、string和Pchar的相互转换

    因为要调用windows的api或者给vc++写接口,很多地方都要用到pchar,现在将char数组.string和pchar之间的相互转换都列出来,都是网上找的资料,我总结一下,先直接上代码,再讲原 ...

  9. Java byte和hex十六进制字符串转换

    在Java中字符串由字符char组成, 一个char由两个byte组成, 而一个byte由八个bit组成, 一个十六进制字符(0-F)实际上由4个字节byte即可表达, 因此, 从字节数组到十六进制字 ...

随机推荐

  1. 淘宝JAVA中间件Diamond

    以下是转载自网上资料,但是根据步骤可以搭建出diamond配置中心服务器. 项目中需要用到diamond的理由是, 项目中使用了很多定时任务和异步任务.而且这些定时任务和异步任务都是分布式的安排在多个 ...

  2. maven 插件之 AutoConfig 工具使用笔记

    AutoConfig 是一款 maven 插件,主要用于 Maven 项目打包使用.在我们的工作中,会将自己写的代码打成 jar 包或者 war 包发布到各种环境上.一般地,不用的环境所使用的数据库. ...

  3. HDU 5360 Hiking(优先队列)2015 Multi-University Training Contest 6

    Hiking Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total S ...

  4. 倍福TwinCAT(贝福Beckhoff)基础教程7.1 TwinCAT 如何简单执行NC功能块 TC3

    这一节我们介绍简单的NC运动(前面所讲的所有内容都是PLC编程和HMI的界面,算是基础知识),这里NC就是控制伺服电机的部分(当然还不是实际的NC轴,是虚拟轴,但是用到的函数都是一样,可以为后面的实际 ...

  5. linux之getopt 函数(转)

    命令行参数解析函数 —— getopt() getopt()函数声明如下: #include <unistd.h> int getopt(int argc, char * const ar ...

  6. hadoop native本地库问题总结

    近期,打算hbase建表用snappy压缩时,碰到一些hadoop本地库的问题. 事实上这些问题是一直存在的,仅仅是不影响正常使用,就没有引起重视. 这次希望彻底解决下面问题: 问题一:运行start ...

  7. 安装JDK不当--找不到或无法加载主类 com.sun.tools.javac.Main

    问题描述:我的问题是在使用javac编译测试程序市,出现如下错误: 错误: 找不到或无法加载主类 com.sun.tools.javac.Main 解决办法:当出现这个错误时,百度之,结果很多人都是说 ...

  8. ADO.NET基础知识学习(SQLCOnnection&SQLCommand&SQLDataReader&SQLDataAdapter&DataSet)

    通过ADO.NET技术,我们可以高效的完成客户端同数据库之间的数据访问操作,便于我们在客户端程序简便高效的访问以及获取数据库中的有用数据,同时也可以对数据库中的数据进行更新,即可以完成客户端与数据库之 ...

  9. js基础 js自执行函数、调用递归函数、圆括号运算符、函数声明的提升 js 布尔值 ASP.NET MVC中设置跨域

    js基础 目录 javascript基础 ESMAScript数据类型 DOM JS常用方法 回到顶部 javascript基础 常说的js包括三个部分:dom(文档document).bom(浏览器 ...

  10. 基于Virtext6平台的GTX IP核基本设置说明

    本工程基于以下条件使用: 板卡:DBF板v3.0 芯片型号:Virtex6 315T ISE版本:14.7 IP核版本: v6_gtxwizard : 1.12 一.IP核配置进行流程 第一页配置:线 ...