這真讓我困惑,比如說我想將一個整數保存到一個文件中,int x = 56,這個二進制數作爲內存中的56的表示形式的ascii相當於 00000000 00000000 00000000 00111000,這就是:null null null 8並將其寫入文件?我對麼?有人可以解釋這些雙重功能,我應該什麼時候使用他們每個人?即時通訊使用C#順便說一句。 thanx提前!一個Streamwriter和一個二進制打字機有什麼區別?
回答
StreamWriter
用於文本,BinaryWriter
寫入要寫入的實際二進制表示形式。我不是100%確定,但幾乎:)。
二進制寫入器寫入整數的內存中二進制表示。流寫入器寫入ASCII表示。一般來說,前者可以更加緊湊和高效(考慮編寫整數23861398 - 二進制編寫器將需要4個字節,但根據編碼,流編寫器需要8,16甚至32個),但後者導致純文本舊文本。
從MSDN頁StreamWriter和BinaryWriter,你可以清楚地看到不同之處:
的StreamWriter:
實現一個TextWriter在特定 編碼寫 字符流。
和:
的BinaryWriter:
在二進制寫入原始類型到一個 流和支持寫入字符串 特定的編碼。
第一個寫的東西作爲文本,二進制,little endian第二寫道,所以int x = 56
將被寫入00111000 00000000 00000000 00000000
。
從我能分辨出來... StreamWriter更多的是文本和BinaryWriter是原始類型,包括特定編碼的字符串。儘管BinaryWriter用二進制編寫,但對於那些以表面看待事物的人來說,這是一種誤導......就像我所做的那樣。我認爲,當我向底層流寫入一個整數時,它實際上將它寫入二進制文件,我可以再次讀取它作爲1和0的流。 爲了把東西放下,因爲它看起來在代碼:
MemoryStream stream = new MemoryStream();
BinaryWriter bw = new BinaryWriter(stream);
bw.Write(35);
// is equivalent to doing:
stream.Write(BitConverter.GetBytes((int)35), 0, 4);
雖然使用的BinaryWriter位轉移到提取字節和BitConverter使用不安全的指針鑄造,結果是一樣的。一個int是32位或4個字節的長度,它所做的只是將表示該int的字節寫入其基礎流。
StreamWriter的不只是它的意思的文字同樣的事情,所以整數不會被轉換爲字節,而是以字符...這是類似於寫作:
byte[] buffer = Encoding.UTF8.GetBytes("my string here 1234");
stream.Write(buffer, 0, buffer.Length);
這就是爲什麼我說這是寫在二進制文件中的誤導,因爲它的確在技術上。將每個寫入的字節分解成若干位,並獲得二進制值。然而,說它將原始類型寫成字節數組會更有意義。如果您要將流轉換爲字符串,則不會得到1和0的字符串。
- 1. 65和二進制字母A有什麼區別?
- 2. 在CSS中,第一個字母和第一個字母有什麼區別?
- 3. 陷阱和模擬與二進制翻譯有什麼區別?
- 4. %和,在一個字符串中有什麼區別?
- 5. 這2個進口有什麼區別?
- 6. 有序樹和有根樹有什麼區別? - 一個例子
- 7. 計算一個值的二進制模式時,ulong和long之間有什麼區別?
- 8. 只有一個參數時,$ @和$ 1之間有什麼區別?
- 9. 調用Stream.Write和使用StreamWriter有什麼區別?
- 10. MySQL位與二進制位有什麼區別?
- 11. 兩個字符串有什麼區別?
- 12. 在Ember中,這個和這個控制器有什麼區別
- 13. 返回一個Iterator和一個不可修改的列表有什麼區別?
- 14. 創建一個Web應用程序和一個網站有什麼區別?
- 15. 把@Autowired放到一個變量和一個方法之間有什麼區別?
- 16. CharSequence []和一個String []之間有什麼區別?
- 17. 之間有什麼區別。和#在一個CSS文件?
- 18. J2ME Wireless Toolkits和哪一個選擇有什麼區別?
- 19. ajax和jquery有什麼區別,哪一個更好?
- 20. 模擬對象和設置一個值有什麼區別
- 21. 色調和ambari視圖有什麼區別?哪一個更好
- 22. arrayListOf和mutableListOf有什麼區別,哪一個更好?
- 23. 導入和擴展一個類有什麼區別?
- 24. 崩潰和死機有什麼區別?
- 25. arc4random和隨機有什麼區別?
- 26. 爲什麼我的nodejs代碼中的第一個和第二個套接字請求有區別?
- 27. WebKit每晚構建二進制文件和Safari二進制文件有什麼區別?
- 28. 個人和虛擬主機證書存儲有什麼區別?
- 29. 究竟是一個字節,它與二進制文件有什麼關係?
- 30. 概念上二進制和源代碼兼容性有什麼區別?
這是二進制表示,而不是ASCII。 – 2011-01-06 11:25:10
00111000 = 0 * 1 + 0 * 2 + 0 * 4 + 1 * 8 + 1 * 16 + 1 * 32 + 0 * 64 + 0 * 128 = 56。 – 2011-01-06 12:31:06