十六进制字符串 char数组 转换 c c++ java
来源:互联网 发布:tomcat发布java项目 编辑:程序博客网 时间:2024/06/11 09:26
欢迎指正不足
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
- 十六进制字符串 char数组 转换 c c++ java
- 十六进制字符串、char数组的转换: c c++ java
- 十六进制字符串 char 数组 转换 c/c++
- Linux下用C语言将一个字符串格式(char*)的MAC地址转换为十六进制数组
- Linux下用C语言将一个字符串格式(char*)的MAC地址转换为十六进制数组
- Linux下用C语言将一个字符串格式(char*)的MAC地址转换为十六进制数组
- C#【数据转换】十六进制字符串转化成字节数组
- C:数组转换十六进制式的字符串输出。
- c/c++中 char与十六进制转换
- C/C++ 十六进制char*与Binary char*相互转换
- C#char字符数组与字符串相互转换
- 十六进制字符串与char字节数组的转换函数
- 十六进制字符串与char字节数组的转换函数 II
- char*数组(c类型字符串)和Vc++中的CString的转换,char*数组等问题
- C语言char*字符串数组和unsigned char[]数组的相互转换
- C语言char*字符串数组和unsigned char[]数组的相互转换
- C语言 十六进制字符转换为字符串
- 在List范型集合中实现自定义条件复杂查询 .
- C#和Java中二维数组的区别 .
- 如何有效地解决问题
- java23种设计模式之单例模式(Singleton)
- qt下的跨目录多工程编译
- 十六进制字符串 char数组 转换 c c++ java
- Java Base64编码类推荐
- 分享平台接入
- useful
- 分享Silverlight/WPF/Windows Phone/HTML5一周学习导读(3月12日-3月18日)
- 解析STL中典型的内存分配
- java23种设计模式之建造者模式(Builder)
- 黑马--我的梦想之地
- 缺少 mcrypt 扩展。请检查 PHP 配置