作者superlubu (叔叔你人真好)
看板java
标题Re: [问题] socket传送数值出错
时间Thu Jan 17 13:25:53 2008
: rbw.write(controla[i+1]);
: gui.border=br.read();
: → andykid:我的值都可以正常读入..除了height..每次都是63 01/17 12:56
你误会了 write(int) 和 int read() 的用法,它们是用来写/读 character
而不是 integer 的,请看以下:
import java.io.*;
public class Test {
public static void main(String[] argv) throws Exception {
PipedOutputStream o = new java.io.PipedOutputStream();
PipedInputStream i = new java.io.PipedInputStream(o);
BufferedWriter w = new BufferedWriter(new OutputStreamWriter(o));
w.write(100000);
w.flush();
o.flush();
w.close();
o.close();
System.out.println("read: " + i.read());
}
}
结果出来仍然会是 63, 所有 write(int b) 中, b 值比 127 大的话,就会变成 63 的了
注: charset 问题,当 OutputStreamWriter 设成 charset = UTF-8,比 65535 大的数
便会当成 0
附带一提,正常来说玩这种 primitive data transfer,java.io.DataInputStream 和
java.io.DataOutputStream 是好物
--
劲过吕布的劲过相簿...
http://www.pixnet.net/superlubu
乱七八糟的,不好意思 m(_ _)m
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 147.8.130.225
※ 编辑: superlubu 来自: 147.8.130.225 (01/17 13:29)
※ 编辑: superlubu 来自: 147.8.130.225 (01/17 16:30)