我想將二進制文件轉換爲ascii charcters數組。我怎樣才能做到這一點 。 謝謝。如何將二進制文件轉換爲一組ascii文字記錄器
0
A
回答
4
這取決於你想要用它做什麼。 Ascii應該是7位(0-127是明確的,其他字符是代碼頁相關的)。所以普通的ASCII編碼可能會導致令人討厭的驚喜(其中包括非printables字符作爲空值...)
如果您希望將某些內容打印到字節數組中,則不應將其轉換爲ASCII編碼。你最好在Base64中編碼它,這是一種安全的(儘管不是最優的尺寸)方法來編碼字符串中的二進制。
來編碼Base64編碼的字節,你可以只是去:
string result = System.Convert.ToBase64String(yourByteArray);
0
您可以讀取每個字符並將其轉換爲字符。這會將每個字節轉換爲ASCII字符。那是你想要做的嗎?
2
查看BASE64或UUEncoding。我假設你只想使用256個字符的ASCII字符集中的可打印字符。
BASE64僅使用64個字符(有時在通過電子郵件發送二進制文件時使用此字符)。這會導致輸出的大小增加 - 在您的情況下您必須考慮這一點。
1
StreamReader reader = new StreamReader("pathtoyourbinaryfile", System.Text.Encoding.ASCII);
char[] text = reader.ReadToEnd().ToCharArray();
0
我不相信,早期應答回答了這個問題。很多人說ASCII時,他們的意思是字節,所以我懷疑提問者想要讀取二進制文件而不是帶有編碼字符的文本文件。
爲了演示的不同的技術的影響,我從以下字符串創建的UTF-8文本文件:
string s = "\ta£\x0394\x221A"; // tab; lower case a; pound sign; Greek delta; square root
下面的程序爲文本字符串第一讀取該文件然後作爲字節數組。在每種情況下,它都將輸入顯示爲十進制,然後顯示爲十六進制。
String test = "";
String fileStg = File.ReadAllText("Test.txt");
for (int i = 0; i < fileStg.Length; i++)
test += (int)fileStg[i] + " ";
Debug.Print(test);
test = "";
for (int i = 0; i < fileStg.Length; i++)
test += ((int)fileStg[i]).ToString("X") + " ";
Debug.Print(test);
test = "";
Byte[] fileByte = File.ReadAllBytes(pathProg + "Test.txt");
for (int i = 0; i < fileByte.Length; i++)
test += fileByte[i].ToString() + " ";
Debug.Print(test);
test = "";
for (int i = 0; i < fileByte.Length; i++)
test += fileByte[i].ToString("X") + " ";
Debug.Print(test);
輸出:
9 97 163 916 8730 13 10 9 61 A3 394 221A D A 239 187 191 9 97 194 163 206 148 226 136 154 13 10 EF BB BF 9 61 C2 A3 CE 94 E2 88 9A D A
注意,當爲一個文本文件中讀取,BOM表已經被剝去和多字節UTF-8字符已經成爲輸入字符串的單個字符。但是當以字節數組讀取時,我會收到BOM和原始UTF-8。
我懷疑提問者想要讀取一個真正的二進制文件,而不是一個Unicode文本文件,但我相信這個例子更好地說明了這兩種技術的效果,並證明如果提問者希望讀取二進制文件,那麼ReadAllBytes是更合適的技術。
相關問題
- 1. 如何將二進制文件轉換爲字節數組?
- 2. 轉換字符爲二進制文件
- 3. 將二進制IOstream轉換爲文件
- 4. 在java中將二進制文件轉換爲字節數組?
- 5. 如何將二進制文件轉換爲numpy文件?
- 6. 如何在Java中將字節轉換爲二進制文件?
- 7. 如何將帶有數字的文本文件轉換爲二進制文件?
- 8. 如何將十六進制文件轉換爲二進制數組Android,Java
- 9. 如何將十六進制文件轉換爲二進制文件?
- 10. 如何將字節數組或二進制數據轉換爲音頻文件
- 11. 如何將十六進制數字轉換爲C++中的二進制文件?
- 12. 將二進制文件轉換爲C中的文本文件
- 13. 如何將ASCII轉換爲二進制文件?
- 14. 如何將二進制文件轉換爲長整數?
- 15. 如何將char轉換爲二進制文件?
- 16. 如何將armv7二進制文件轉換爲i386/x86_64
- 17. 計算機如何將圖像轉換爲二進制文件?
- 18. 如何將二進制文件轉換爲ASCII
- 19. 如何將二進制數字轉換爲八進制數字?
- 20. 將原始文件(二進制數據)轉換爲XML文件
- 21. 將.m文件轉換爲二進制可執行文件
- 22. 需要將二進制文件轉換爲Txt文件
- 23. 將文件轉換爲二進制文件#
- 24. 使用PHP將二進制文件轉換爲文件
- 25. 將Ascii代碼文件轉換爲二進制文件
- 26. 將二進制文件轉換爲字符串,反之亦然
- 27. 將文件轉換爲二進制字符串與PHP
- 28. 將1和0的字符串轉換爲二進制文件
- 29. 將任何文件轉換爲二進制字符串和從二進制文件
- 30. 如何將十進制轉換爲固定長度的二進制文字
請提供更多信息? – 2009-05-29 14:53:29
我假設你只談論可打印的字符。並非所有的256個ASCII字符都是可打印的。 – 2009-05-29 14:55:30
這些問題讓我想起http://en.wikipedia.org/wiki/File:Bird_converted_to_ASCII_characters.png – tanascius 2009-05-29 15:01:03