基础知识掌握,求问关于串口助手发送接收的16进制的转换问题
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。
相关推荐
MFC实现串口通信16进制发送接收
利用MFC实现串口通信,用到MSCOMM32控件,能控制发送的时间,最短1ms,同时支持16进制和字符型的接收和发送,功能很强大,基于VS2010编写,研究MFC串口通信的同学值得拥有!
MFC单文档之串口通讯实现16进制数据的发送和接收
要实现的功能是打开串口后进行收发数据了,而且有多个编辑框,编辑框中数据是整形,中间涉及到进制转换。
Qt 串口通信(QSerialPort)16进制收发实例代码(QT实战5)
Qt 串口通信(QSerialPort)16进制收发实例代码 首先在项目文件里面添加一句 QT += serialport 使用静态函数生成QSerialPortInfo对象列表。列表中的每个QSerialPortInfo对象表示一个串行端口,可以查询端口名称、系统位置、描述和制造商。QSerialPortInfo类还可以用作QSerialPort类的s...
51单片机串口程序,字符串16进制发送与接收
51单片机串口程序,字符串16进制发送与接收.docx
Python3 串口接收与发送16进制数据包的实例
如下所示: import serial import string import binascii s=serial.Serial('com4',9600) s.open() #接收 n=s.inwaiting() if n: data= str(binascii.b2a_hex(s.read(n)))[2:-1] print(data) #发送 d=bytes.fromhex('10 11 12 34 3f') s.write(d) s.close() 以上这篇Python3 串口接收与发送16进制数据包的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支


