A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 kevinmesss.tz 于 2014-3-13 13:27 编辑

write(5);写到记事本里面变成一个符号了
5是int类型的,它的后8位不是0000 0101吗
为什么数字也会出现乱码

QQ截图20140301141130.png (146.17 KB, 下载次数: 53)

源码

源码

QQ截图20140301141148.png (8.38 KB, 下载次数: 53)

运行结果

运行结果

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

6 个回复

倒序浏览
运行结果第一行是个 |线
然后我写了一个FileInputStream关联这个文件读取出来的是乱码

为什么会这样?

QQ截图20140301141949.png (2.41 KB, 下载次数: 46)

QQ截图20140301141949.png
回复 使用道具 举报
记事本解析错误,你换个编辑器试试
回复 使用道具 举报
年少丶 发表于 2014-3-1 20:13
记事本解析错误,你换个编辑器试试

试过了 我换成UE也是这个样子
这不是中文 记事本不会解析错吧
回复 使用道具 举报
能把源码不用图片贴出来吗?这样不好给你调试
回复 使用道具 举报
q527198615 发表于 2014-3-2 20:35
能把源码不用图片贴出来吗?这样不好给你调试

那种可以复制图片中的内容的格式不会贴。。我把源码上传吧

Byte1_FileOutputStreamDemo.rar

683 Bytes, 下载次数: 108

回复 使用道具 举报
水蓝 中级黑马 2014-3-13 09:19:57
7#
本帖最后由 水蓝 于 2014-3-13 09:22 编辑

我这边用Noptepad++看了一下输出的fos.txt。如下图:



给楼主分析一下原因吧。

首先,FileOutputStream的write方法是逐个字节向文件中输出。
下面是你代码中5次调用write方法写入的字节码:(后面的括号为注释)
5(这个就是传说中的'ENQ',上图有红色圈圈出)
13,10(这个是换行符)
104, 101, 108, 108, 111, 32, 106, 97, 118, 97(这个是“hello java”)
13,10(这个是换行符)
108, 108, 111, 32, 106(这个是你从“hello java”字符串中,从下标2开始,向后截取5个字节后的输出)

关于为什么写入5是‘ENQ’,我们可以参考一下ASCII码表:
如下图所示,ASCII码表中的值为5的位置,就是‘ENQ’的意思


最后,建议楼主以后在查看程序输出文件时,少用记事本。建议用(UE,或者Notepad++)



评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马