2
What's的的Java字符串編碼
"hello world".getBytes("UTF-8");
和
Charset.forName("UTF-8").encode("hello world").array();
區別? 第二個代碼在大多數情況下會在末尾產生一個0字節的字節數組。
What's的的Java字符串編碼
"hello world".getBytes("UTF-8");
和
Charset.forName("UTF-8").encode("hello world").array();
區別? 第二個代碼在大多數情況下會在末尾產生一個0字節的字節數組。
你的第二個片段使用ByteBuffer.array()
,它只返回支持ByteBuffer
的數組。這可能比編寫至ByteBuffer
的內容長。
基本上,我想,如果你想使用第一種方法一byte[]
從String
:)你可以與ByteBuffer
處理將其轉換爲一個byte[]
的使用其他方式,但考慮到String.getBytes(Charset)
提供方便,我只是使用...
示例代碼從ByteBuffer
檢索字節:
ByteBuffer buffer = Charset.forName("UTF-8").encode("hello world");
byte[] array = new byte[buffer.limit()];
buffer.get(array);
System.out.println(array.length); // 11
System.out.println(array[0]); // 104 (encoded 'h')
只是觀察到'字節[] = B1的 「Hello World」 .getBytes( 「UTF-8」 ); byte [] b2 = Charset.forName( 「UTF-8」)。encode(「hello world」)。array();'。 'b1.length'打印出11,'b2.length'打印出12個。 – 2014-09-04 16:29:19
@Sandeep:是的,因爲'ByteBuffer'大概被分配了長度爲12的後備數組。如果你打開'limit()'而不是ByteBuffer,你只會得到11個字節...... – 2014-09-04 16:38:40