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

qq_17043905 qq_17043905 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
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。
...全文

相关推荐

MFC实现串口通信16进制发送接收

利用MFC实现串口通信,用到MSCOMM32控件,能控制发送的时间,最短1ms,同时支持16进制和字符型的接收和发送,功能很强大,基于VS2010编写,研究MFC串口通信的同学值得拥有!

种花豹子

MFC单文档之串口通讯实现16进制数据的发送和接收

要实现的功能是打开串口后进行收发数据了,而且有多个编辑框,编辑框中数据是整形,中间涉及到进制转换。

FOREVER-MAYBE

Qt 串口通信(QSerialPort)16进制收发实例代码(QT实战5)

Qt 串口通信(QSerialPort)16进制收发实例代码 首先在项目文件里面添加一句 QT += serialport 使用静态函数生成QSerialPortInfo对象列表。列表中的每个QSerialPortInfo对象表示一个串行端口,可以查询端口名称、系统位置、描述和制造商。QSerialPortInfo类还可以用作QSerialPort类的s...

ydyuse

51单片机串口程序,字符串16进制发送与接收

51单片机串口程序,字符串16进制发送与接收.docx

BXP326

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进制数据包的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支

weixin_38651365
评论
收藏 已收藏
分享
返回顶部
qq_17043905
Java 51,407 成员 86,132 内容