java的socket通信如何直接接收16进制数据 100

由于处理数据时需要按照协议来处理,所以需要16进制数据,有写过接收到字符型然后转化为16进制,觉得有点麻烦,有没有办法直接接收16进制数据?... 由于处理数据时需要按照协议来处理,所以需要16进制数据,有写过接收到字符型然后转化为16进制,觉得有点麻烦,有没有办法直接接收16进制数据? 展开
 我来答
tn瓶邪
2015-08-14 · TA获得超过1882个赞
知道小有建树答主
回答量:610
采纳率:98%
帮助的人:113万
展开全部
发送消息之前转码为16进制
Java code
public static final String encodeHex(String msg) {
byte[] bytes = null;
try {
bytes = msg.getBytes("GBK");
} catch (java.io.UnsupportedEncodingException e) {
e.printStackTrace();
}
StringBuffer buff = new StringBuffer(bytes.length * 4);
String b;
char a;
int n = 0;
int m = 0;
for (int i = 0; i < bytes.length; i++) {
b = Integer.toHexString(bytes[i]);
if (bytes[i] > 0) {
buff.append("00");
buff.append(b);
n = n + 1;
} else {
a = msg.charAt((i - n) / 2 + n);
m = a;
b = Integer.toHexString(m);
buff.append(b.substring(0, 4));
i = i + 1;
}
}
return buff.toString();
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
46...0@qq.com
2013-12-06
知道答主
回答量:21
采纳率:100%
帮助的人:11.9万
展开全部
public class Demo {

public static void main(String[] args) {
byte[] result = decodeHex("020D2B20202030303032311303");
for(byte b : result) {
System.out.println(b);
}
}

public static byte[] decodeHex(String nm) {
int len = nm.length();
byte[] result = new byte[len/2];
for(int i = 0; i<len; i++) {
char c = nm.charAt(i);
byte b = Byte.decode("0x" + c);
c = nm.charAt(++i);
result[i/2] = (byte) (b << 4 | Byte.decode("0x" + c));
}
return result;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
99电脑99
2013-11-25 · TA获得超过142个赞
知道答主
回答量:263
采纳率:0%
帮助的人:76.9万
展开全部
这么专业的问题可能很难有比较准确的答案吧

你这是死马当活马医啊
更多追问追答
追问
不需要准确答案,只需要粘贴一句接收16进制数据的代码就行,能用的话就给分
追答
16进制是什么东东 ~~~~(>_<)~~~~  文科生你伤不起啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
huyingjava
2013-11-25 · TA获得超过552个赞
知道小有建树答主
回答量:185
采纳率:0%
帮助的人:102万
展开全部
传之前将16进制本转化为2进制收到再将2进制转化为16进制
更多追问追答
追问
额,另一端是一个电子器件,无法将16进制转化为2进制发送
追答
那能给你传过来字符串?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
IamIceKing
2013-11-25
知道答主
回答量:8
采纳率:0%
帮助的人:3.4万
展开全部
网络传输字符串类型。
追问
什么意思?
我用调试工具传输16进制数据时,接收到的还是字符串
我的意思是直接接收16进制,不要转化为字符串
追答
网络传输函数给的就是字符串类型,这是给我们接口,没办法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式