疑問:2個int 占8字節(jié)。一個long加一個double是16字節(jié),,utf-8兩個占6字節(jié),兩個utf-16be占4字節(jié), 共計占用34個字節(jié),,但是打印輸出36字節(jié),求解

圓圓的圈圈
2014-11-02
2 回答
舉報
0/150
提交
取消
2015-01-14
樓上的回答不正確,正確的答案:
int是4個字節(jié),long和double都是8個字節(jié)。
writeChars方法采用UTF16編碼,一個漢字是2個字節(jié)。
writeUTF方法采用UTF8編碼,一個漢字是3個字節(jié)。
所以計算出34個字節(jié),那么多余的2個字節(jié)是從哪里來的呢?
告訴你,是從WriteUTF方法得來的2個字節(jié)。請看API:
void writeUTF(String?s)?throws IOException
將表示長度信息的兩個字節(jié)寫入輸出流,后跟字符串 s 中每個字符的 UTF-8 修改版表示形式。如果 s 為 null,則拋出 NullPointerException。根據(jù)字符的值,將字符串 s 中每個字符轉(zhuǎn)換成一個字節(jié)、兩個字節(jié)或三個字節(jié)的字節(jié)組。
看到了吧,先寫入表示字符串長度的兩個字節(jié)后,再開始寫入字符串。所以是36個字節(jié)。
2014-11-05
dos.writeLong(10l),貌似l占用了兩個字節(jié),可以試試