问个Socket发送字节问题 我现在做一个温控接收仪的东西,用TCP连接,但是那边需要发送一个口令:68770000df0 这样的,用16进制发送出去,字节方式,我现在纠结中,问一下怎么发送16进制的字节,我试过很多方法都不行 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 是指十六进制的字符串么?那么就是: String str = "68770000df0"; byte[] message = str.getBytes();写就随意了,write(byte);如果是要将该十六进制转为数值来发送,那么就是: String str = "68770000df0"; long data = Long.parseLong(str, 16);写的时候注意用ObjectOutputStream.writeLong(data);需要提醒你的是,一般这种都会有结束符,否则对方无法判定你这个口令字符串多长才结束,你需要了解下这个问题。 你以为对方是java虚拟机么?你用 ObjectOutputStream,那头不晕菜才怪发送16进制字节指令:从连接里得到输出流,然后 out.write(0x06); out.write(0x87); out.write(0x70); out.write(0x00); out.write(0x0d); out.write(0xf0);估计就差不多了 话说...68770000df0 <- 这个东西是String还是一个字节数组...你也不说清楚...字符串的话String str = 68770000df0;OutputStream os = somewhere.getOutputStream(); // 获取你的输出流os.write(str.getBytes());os.flush();字节数组就直接发送就行了byte[] buf = {0x06,0x08,0x07,0x07,0x00,0x00,0x00,0x00,0x0d,0x0f,0x00 };OutputStream os = somewhere.getOutputStream(); // 获取你的输出流os.write(buf);os.flush();AND:流操作都是直接操作字节的,不知道你说的试了很多方法都不能操作字节是肿么回事...AND..16进制,10进制,2进制只是为了让我们方便"观看"字节的值而已,字节就是字节... 不会晕菜的,我又没发送Object,只是利用它writeLong()函数将long型数据转为byte数组而已。不过核心仍然是原始数据究竟是什么内容,16进制整数还是字符串,楼主一直没揭秘。 你不知道ObjectOutputStream在构造时,会往包装流里写入一些标志位的么?如果不是基于java序列化操作,不要使用ObjectIn/OutputStream java与c#的socket通信问题!求解答呀 toString出问题了。。。。。。。。。。。。 关于哈希冲撞的问题 求一个过滤特殊字符的方法 初学Java 帮忙写个简单程序 画图板 这个JOptionPane怎么不用实例化就可以使用他的构造方法? 我怎么编译老是说有问题,求助 问问大虾们用的是什么JAVA开发工具? 提问:如何消除在JPanel上绘制线条出现的闪动? ConcurrentHashMap能否被手动加锁来执行独占式访问 MyEclipse工具问题 java中控制台输入
String str = "68770000df0";
byte[] message = str.getBytes();
写就随意了,write(byte);
如果是要将该十六进制转为数值来发送,那么就是:
String str = "68770000df0";
long data = Long.parseLong(str, 16);
写的时候注意用ObjectOutputStream.writeLong(data);
需要提醒你的是,一般这种都会有结束符,否则对方无法判定你这个口令字符串多长才结束,你需要了解下这个问题。
从连接里得到输出流,然后 out.write(0x06);
out.write(0x87);
out.write(0x70);
out.write(0x00);
out.write(0x0d);
out.write(0xf0);估计就差不多了
字符串的话
String str = 68770000df0;
OutputStream os = somewhere.getOutputStream(); // 获取你的输出流
os.write(str.getBytes());
os.flush();字节数组就直接发送就行了
byte[] buf = {0x06,0x08,0x07,0x07,0x00,0x00,0x00,0x00,0x0d,0x0f,0x00 };
OutputStream os = somewhere.getOutputStream(); // 获取你的输出流
os.write(buf);
os.flush();AND:流操作都是直接操作字节的,不知道你说的试了很多方法都不能操作字节是肿么回事...
AND..16进制,10进制,2进制只是为了让我们方便"观看"字节的值而已,字节就是字节...
不会晕菜的,我又没发送Object,只是利用它writeLong()函数将long型数据转为byte数组而已。不过核心仍然是原始数据究竟是什么内容,16进制整数还是字符串,楼主一直没揭秘。
如果不是基于java序列化操作,不要使用ObjectIn/OutputStream