我們使用java基元的'字節'如fileInputStream.read(byte)
等讀取和寫入二進制文件等。在一些更多的例子中,我們看到byte[] = String.getBytes()
。一個字節只是8位值。爲什麼我們使用byte[]
來讀取二進制文件?從文件或字符串讀取後,字節值包含的內容是什麼?爲什麼我們使用字節來讀取二進制數據
回答
讀和使用java原始的「字節」等
fileInputStream.read(byte)
等
因爲操作系統模型的文件作爲字節序列(或更精確地,如八位字節)寫二進制文件。 byte
類型是Java中八位字節的最自然表示。
爲什麼我們使用byte []來讀取二進制文件?
和以前一樣的答案。但實際上,您也可以用其他方式讀取二進制文件;例如使用DataInputStream
。
從文件或字符串讀取後,字節值包含的內容是什麼?
在第一種情況下,文件中的字節。
在第二種情況下,您不會從字符串中「讀取」字節。相反,當您撥打String.getBytes()
時,您將得到包含字符串字符的字節,這些字符是編碼的中的特定字符集。如果使用無參數getBytes()
方法,您將獲得JVM的默認字符集/編碼。您也可以提供一個參數來選擇不同的編碼。
Java對字節(8位)數量和字符進行了明確區分。從概念上講,Java字符是Unicode代碼點,字符串和文本的類似表示是字符序列...不是字節序列。在設計Java時,Unicode字符空間被設置爲16位,即有< = 65536個被識別的代碼點,Java被設計爲與這個匹配。 。和char
類型被定義爲16位無符號整型。但是隨後Unicode擴展到> 65536個代碼點,並且Java留下了一個尷尬的問題,即某些Unicode代碼點無法用一個char
值表示。相反,它們由一對char
值表示......所謂的替代對 ...以及Java字符串在UTF-16中得到了有效表示。對於最常見的字符/字符集,這並不重要。但是,如果您需要處理不常見的字符/字符集,則正確處理字符串的方法是使用「代碼點」方法。)
該字符串建立在字節上。字節是建立在位上的。這些位「物理」存儲在驅動器上。
因此,不是從驅動器中逐位讀取數據,而是以更大的字節數讀取數據。
所以byte []包含原始數據。原始數據與存儲在驅動器上的數據相同。
您最終會讀取原始數據,然後您可以應用格式化程序將該字節轉換爲字符並最終轉換爲熨燙板上的字母,如果該文件是txt文件。如果你死了,圖像會讀取存儲有關字符顏色信息的字節。
其實,這是誤導。 A ** Java **字符串是一系列的Unicode字符,以16位代碼的序列表示(以UTF-16的形式)。 –
- 1. 讀取二進制字節
- 2. ifstream的讀取二進制數據的問題爲0x00字節
- 3. 爲什麼我不能用operator >>讀取fstream的二進制數據?
- 4. 讀取二進制數據
- 5. 以字節讀取二進制文件
- 6. 讀取二進制數據(字節順序)
- 7. 如何從DataBase中讀取10000+字節的二進制數據[]?
- 8. 爲什麼在Web套接字中使用二進制數據?
- 9. 使用python從二進制文件中讀取數字數據
- 10. 什麼是AMFPHP,我如何使用它來讀取二進制文件?
- 11. 讀40個字節的二進制數據爲ASCII文本的
- 12. 爲什麼我的二進制到十進制轉換程序不讀取0?
- 13. 解碼字節間二進制數據
- 14. 在elisp中讀取二進制數據
- 15. STAX API讀取二進制數據
- 16. 讀取二進制數據`stringstream`
- 17. Matlab讀取異源二進制數據
- 18. MinGW:讀取二進制數據失敗
- 19. 通過C++讀取二進制數據
- 20. 讀取二進制數據問題
- 21. 讀取node.js中的二進制數據
- 22. Python:搜索/讀取二進制數據
- 23. 從串口讀取二進制數據
- 24. 節點tcp socket:從Enfora MT4000讀取二進制數據
- 25. 將二進制讀入十六進制字節數組
- 26. 爲什麼我不能用$資源來讀取JSON數據
- 27. 從二進制文件讀取並將字節數組轉換爲字符串
- 28. 當使用流的讀取字節我讀什麼樣的字節
- 29. Python讀取二進制文件中的二進制數據到字符串?
- 30. 如何將二進制數據讀取到Javascript中的字節數組?
您將如何處理二進制數據?讀取位?一個字節或多或少是大多數內存/文件/ IO系統共有的基本數據結構。 – Matthias
還有什麼用來讀取二進制數據? – Rik
Java爲了讀取字節而進行了大量優化,這就是爲什麼在您真正需要的時候將布爾值存儲爲字節的原因。 –