簡體   English   中英

C#如何從二進制文件中刪除換行符?

[英]C# How can i remove newline characters from binary?

基本上我有二進制數據,我不介意它是不可讀的但是我把它寫到一個被解析的文件,所以它的重要性換行字符被取出。

當我轉換成字符串時,我以為我做了正確的事....

byte[] b = (byte[])SubKey.GetValue(v[i]);
s = System.Text.ASCIIEncoding.ASCII.GetString(b);

然后刪除換行符

String t = s.replace("\n","")

但它不起作用?

換行符可能是\\ r \\ n,您的二進制數據可能不是ASCII編碼的。

首先換行符( Environment.Newline )通常是Windows上的兩個字符,你的意思是刪除單個回車符或換行符嗎?

其次,將文本編碼應用於二進制數據可能會導致意外轉換。 例如,購買未映射到ASCII字符的二進制數據會發生什么?

新行字符可能是\\n\\r \\n\\r \\r\\n 取決於操作系統類型 ,這是LinuxMacintoshWindows標記。

但是,如果你說你的文件是二進制的,你知道他們的內容中有ASCII換行符嗎?

如果這是二進制文件,這可能是一個結構 ,如果這樣他們在刪除換行符之后構造你,則在該換行符之后向左移動所有數據並損壞她的數據

我會想象刪除二進制塊中的字節,這些字節對應於換行實際上會破壞二進制數據,從而使其無用。

也許你最好使用base64編碼,這將產生ASCII安全輸出。

如果這是文本數據,則將其作為文本數據加載(使用正確的編碼),將其替換為字符串,然后重新編碼(使用正確的編碼)。 對於某些編碼,您可以在文件級別進行交換(不進行解碼/編碼),但我不打賭。

如果這是任何其他二進制表示,您將必須知道確切的詳細信息。 例如,嵌入在二進制文件的一部分中的字符串具有長度前綴是常見的(但不是確定的)。 如果在不更改長度前綴的情況下更改數據,則只會損壞文件。 要更改長度前綴,您需要知道格式(它可能是big-endian / little-endian,任何固定數量的字節,或者前綴本身可能是可變長度)。 或者它可能是分隔的。 或者可能存在分散在文件中的所有需要​​修復的相對偏移。

同樣可能; 你可能偶然在二進制文件中有相同的字節序列, 不代表換行符; 你可能會完全破壞數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM