基础知识掌握,求问关于串口助手发送接收的16进制的转换问题

qq_17043905 2015-05-13 11:53:40
package Math01;

import java.io.UnsupportedEncodingException;


/**
* 16进制转换
*
*/
public class Math01 {
public static void main(String [] args) throws UnsupportedEncodingException {
// log.log(str2hexstr("0"));
String s = "DE 03 03 FF 00";
String m = hexstr2hex(s);
log(m+"将十六进制码转换成对应的十进制值");
log("转换成gb2312字符集编码:"+str2hexgb2312str(m));
log("GB2312的16进制编码转换成gb2312字符集的字符:"+gb2312hex2str(gb2312hex2str(str2hexgb2312str(m).replace(" ", ""))));
log("GB2312的16进制编码转换成gb2312字符集的字符:"+str2hexgb2312str(gb2312hex2str(gb2312hex2str(str2hexgb2312str(m).replace(" ", "")))));
}


/**
* 将16进制字符串对应16进制值,
* @param s
* @return
*/
public static String hexstr2hex(String s){
char [] chs = s.toCharArray();
int c =0;
String tmp ="";
for(int i =0;i<chs.length;i++){
if(chs[i]>='0'&&chs[i]<='9'){
c = chs[i]-'0';
}else if(chs[i]>='A'&&chs[i]<='F'){
c =chs[i]-'A'+10;
}else if(chs[i]>='a'&&chs[i]<='f'){
c =chs[i]-'a'+10;
}else{
continue ;
}
tmp +=(String.valueOf(Integer.toString(c,16)));
}
return tmp.toUpperCase();
}

/**
* 将字符串转化为对应的gb2312编码
* @throws UnsupportedEncodingException
*/

public static String str2hexgb2312str(String s) throws UnsupportedEncodingException{
String str="";

byte [] tmp = s.getBytes("gb2312");
for(byte a : tmp){
str +=Integer.toHexString(a&0xff);
}

return str;
}
/**
* 将16进制gb2312字符串转换为String字符
* @throws UnsupportedEncodingException
*/
public static String gb2312hex2str(String s) throws UnsupportedEncodingException{
byte [] chs = new byte[s.length()/2];
String str ="";
for(int i=0, j=0;i<chs.length;i++){
byte height =Byte.parseByte(s.substring(i*2,i*2+1),16);//高八位,0 ,1
byte low = Byte.parseByte(s.substring(i*2+1, i*2+2), 16);//低八位 2,3
chs[i] =(byte)(height<<4| low);
}
str =new String(chs,"gb2312");
return str;
}


public static void log(String s){
System.out.println(s);
}

}

//求问,为毛我转换字符串之后再还原,16进制码会丢失,本来是DE 03 03 FF 00 转回来变成了3f33f。
...全文
178 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

50,550

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧