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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘江华 黑马帝   /  2011-10-6 16:06  /  3326 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

但是看张老师视频的时候,不是说 int 类型的占4个字节吗?但是为什么一个数:24 只有一个字节?
(看张老师视频是这样说的。RandomAccessFile.read()只读一个字节)

评分

参与人数 2技术分 +2 收起 理由
李印东老师 + 1
admin + 1 看看马友们的回答 ,继续努力学习!.

查看全部评分

4 个回复

倒序浏览
{:soso_e179:}谢谢,懂了。
回复 使用道具 举报
wsssx 2011-10-9 22:04:28
藤椅
提示: 作者被禁止或删除 内容自动屏蔽
回复 使用道具 举报
int数据类型在计算机里面占用4个字节一个字节是8个二进制位,1 int = 4 * byte
当用输入流读取一些媒体、图像文件时,这些文件里的数据正是常说的二进制数据即:01串
那么用read()读取文件数据时是一个字节一个字节读取的,读一个字节相当于读了八个二进制位,因已到达流末尾而没有可用的字节,则返回值 -1.而文件中任何一个字节位置都有可能是11-11-11-11八个一,
11-11-11-11这是一个字节这个字节转换成十进制时表示-1,-1用一个int类型来接收是被提升了还是-1,但是用四个字节来表示即:
11111111-->11111111-11111111-11111111-11111111,
如果提升的时候前面不补1补0,这时候表示-1的一个字节被提升到int类型4个字节就不是-1了,即:255
11111111-->00000000-00000000-00000000-11111111
那么只要在前面补0,既可以保留原字节数据不变,又可以避免-1的出现。
接下来就是怎样才能按前面补0这种方法将独到的字节提升到int类型的呢?
11111111-11111111-11111111-11111111
&00000000-00000000-00000000-11111111
-----------------------------------------
00000000-00000000-00000000-11111111
即将读取的那个字节&上255即可。
因此RandomAccessFile.read()只读的是一个字节返回的是一个int。。。。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
RandomAccess.read()从文件中读取一个数据字节。以整数形式返回此字节,范围在 0 到 255  .这里说的是一次读取一个数据字节,不是一次读取一个字节。
int型的数占据4个字节,24占据4个字节。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

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