qufudashaozi 2017-01-17 14:53 采纳率: 0%
浏览 2922

java socket 发送二进制流的问题

想通过java socket发送一个二进制流:
0x05 0x03 0x00 0x00 0x00 0x40 0x45 0xbe
说明:这个二进制不代表任何字符串,就是一个命令,服务器端能够识别。

做法是这样的,先申请一块空间赋值,然后发送出去。
char cmd[] = {0x05, 0x03, 0x00, 0x00, 0x00, 0x40, 0x45, 0xbe};
os.print(cmd);
os.flush

或者:
char cmd[] = {0x05, 0x03, 0x00, 0x00, 0x00, 0x40, 0x45, 0xbe};
String command = new String(cmd);
os.print(command);
os.flush

用wireshark抓包看的话,
实际发送的数据是:
0x05, 0x03, 0x00, 0x00, 0x00, 0x40, 0x45, 0x3f.

这个是怎么回事儿?有大神知道吗?
我试了下,貌似数据大于0x80的都有这个问题,是不是二进制转化为字符的时候会有特殊处理?如果我真想要发送一个大于0x80的二进制该怎么处理?

  • 写回答

4条回答

  • 「已注销」 2017-01-17 16:57
    关注

    既然是二进制,为什么不用byte类型呢

    评论

报告相同问题?

悬赏问题

  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮