为了账号安全,请及时绑定邮箱和手机立即绑定

疑问:2个int 占8字节。一个long加一个double是16字节,,utf-8两个占6字节,两个utf-16be占4字节, 共计占用34个字节,,但是打印输出36字节,求解

正在回答

2 回答

楼上的回答不正确,正确的答案:

int是4个字节,long和double都是8个字节。

writeChars方法采用UTF16编码,一个汉字是2个字节。

writeUTF方法采用UTF8编码,一个汉字是3个字节。

所以计算出34个字节,那么多余的2个字节是从哪里来的呢?

告诉你,是从WriteUTF方法得来的2个字节。请看API:

void writeUTF(String s) throws IOException
将表示长度信息的两个字节写入输出流,后跟字符串 s 中每个字符的 UTF-8 修改版表示形式。如果 s 为 null,则抛出 NullPointerException。根据字符的值,将字符串 s 中每个字符转换成一个字节、两个字节或三个字节的字节组。

看到了吧,先写入表示字符串长度的两个字节后,再开始写入字符串。所以是36个字节。

4 回复 有任何疑惑可以回复我~

dos.writeLong(10l),貌似l占用了两个字节,可以试试

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信