2 myself wxy myself_wxy 于 2017.12.11 17:47 提问

请问通过netty或者socket怎么接收16进制的字节码? 5C

我这面做服务器接收 客户端发来的16进制 字节码,如图(图片是客户端发来图片说明的)我想原模原样的接收到这些字节码,返回一个字节数组

6个回答

morgerton
morgerton   2017.12.11 17:58

public int read(byte b[], int off, int len) throws IOException

看 api

sdsfdsffsd
sdsfdsffsd   2017.12.11 18:15

接收到的都是byte[],要自己将byte[]转成16进制

u011637657
u011637657 本身就是十六进制的好吧
2 个月之前 回复
weixin_41357508
weixin_41357508 sdgtjtykulio;p''
2 个月之前 回复
weixin_41357508
weixin_41357508 i2ork[34lyh\j\j
2 个月之前 回复
weixin_41357508
weixin_41357508 uk'lfeg;rth'ytjk
2 个月之前 回复
weixin_41357508
weixin_41357508 回复sdsfdsffsd: wfnwelfg;lg'hglrthj
2 个月之前 回复
weixin_41357508
weixin_41357508 回复weixin_41357508: aqhfowejgperogkrhlth
2 个月之前 回复
weixin_41357508
weixin_41357508 回复myself_wxy: wegjpgjrephktphlt[lj]yj;
2 个月之前 回复
sdsfdsffsd
sdsfdsffsd 回复myself_wxy: 数据在底层传输都是二进制的
2 个月之前 回复
myself_wxy
myself_wxy 这客户端发送过来就是16进制,不用转了吧
2 个月之前 回复
sdsfdsffsd
sdsfdsffsd   2017.12.11 18:27

public static String bytesToHexString(byte[] src) {
StringBuffer sb = new StringBuffer("");
if (src == null || src.length <= 0) {
return null;
}
for (int i = 0; i < src.length; i++) {
int v = src[i] & 0xFF;
String hv = Integer.toHexString(v).toUpperCase();
if (hv.length() < 2) {
sb.append(0);
}
sb.append(hv);
if (i != src.length - 1) {
sb.append(" ");
}
}
return sb.toString();
}

myself_wxy
myself_wxy 感谢,& 0xFF;是什么东西,请指教。
2 个月之前 回复
u013792369
u013792369   2017.12.11 19:50
channelRead( ... ){
        ByteBuf buf = (ByteBuf) msg;
        byte[] receiveMsgBytes = new byte[buf.readableBytes()];
        buf.readBytes(receiveMsgBytes);
        //receiveMsgBytes 就收到了.
}

如果还想转换成16进制字符串
maven的pom中加入

 <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>1.10</version>
</dependency>

就可以用
Hex.encodeHexString(receiveMsgBytes)
这个转换那当然也可以自己写

qq_33169830
qq_33169830   2017.12.12 08:55

如果还想转换成16进制字符串
maven的pom中加入


commons-codec
commons-codec
1.10
啊啊啊

avenccssddnn
avenccssddnn   Rxr 2017.12.13 13:13

netty是一个异步NIO网络应用程序框架,可以自定义加解码器类(channelhandler子类)添加到channelpipeline里。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!