疑问: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个字节。
举报
0/150
提交
取消