DataOutputStream->System.out输出为什么是乱码?

rainy14f 2003-09-19 04:14:37
两个问题请教知情者:
1。我声明了一个DataOutputStream out = DataOutputStream(System.out)
然后把生成的整数写到流,用方法out.writeInt()。
最后控制台显示的全是乱码。这是为什么?

2。我观察在执行过程中的out对象中缓冲区的内容,每个整数是4个字节,当缓存的数超过127,最低字节就显示负数了。我知道一个字节最多能表示127个数,但是出负数又是什么原因呢?难道是它把某一位当成符号了??
...全文
353 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
逍遥过客 2003-09-21
  • 打赏
  • 举报
回复
1. DataOutputStream 的 writeInt(),writeDouble() 等方法输出的内容不是字符型的,因此显示为乱码,但可以通过相应的readInt(),readDouble()等方法读出。上述方法输出的内容是给程序使用的,而不是给人来看的。如果要显示字符型数据,可以使用writeChar()方法。

2. 一个字节表示的数的范围是-128~+127,采用二进制补码表示,最高位为符号位。
rainy14f 2003-09-20
  • 打赏
  • 举报
回复
顶!
rainy14f 2003-09-20
  • 打赏
  • 举报
回复
to jianlin:
把DataOutputStream改成OutputStreamWriter? 还是乱码!

to OneNight:
还是没明白什么意思。你是想说四个字节的值分别是你写的那样吗?
jianlin 2003-09-19
  • 打赏
  • 举报
回复
用Reader就不会了
OneNight 2003-09-19
  • 打赏
  • 举报
回复
public void writeInt(int v)
throws IOException

Writes an int value, which is comprised of four bytes, to the output stream. The byte values to be written, in the order shown, are:


(byte)(0xff & (v >> 24))
(byte)(0xff & (v >> 16))
(byte)(0xff & (v >> 8))
(byte)(0xff & v)
rainy14f 2003-09-19
  • 打赏
  • 举报
回复
ding!

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧