2011-06-13 64 views
2

我正在編寫一個後綴數組排序,並且此算法將一個標記字符附加到原始字符串。這個字符不能在原始字符串中。二進制文件特殊字符

由於這個算法會處理二進制文件字節,是否有任何特殊的字節字符可以確保我在任何二進制文件中都找不到? 如果存在,我如何在C++編碼中表示這個字符?

我在Linux上,我不確定它是否有所作爲。

+0

你想在你的文件中放置一個不能在任何文件中的字節? – 2013-09-09 18:59:48

回答

2

不,沒有。二進制文件可以包含字節值的每個組合。雖然我不會稱它們爲'角色',因爲它們是二進制數據,不是(必然)代表角色。但無論名字如何,它們都可以具有任何價值。

+0

但在二進制文件中沒有eof字符? – Erandros 2011-06-13 21:20:30

+0

不,沒有。 – GolezTrol 2011-06-13 21:21:27

+3

「eof character」是由某些標準I/O庫創建的小說。低級I/O通過嘗試讀取數據緩衝區並獲取部分緩衝區來檢測EOF。 – 2011-06-13 21:28:08

0

一個文件只能包含位。可以將位組解釋爲ASCII字符,浮點數,JPEG格式的照片以及任何您可以想象的內容。解釋基於您選擇的編碼方案(如ASCII,BCD)。如果你的編碼方案沒有填充整個可能的代碼表,你可以爲你的特殊購買者選擇一個(例如,數字可以天真地編碼在4位,2^4 = 16,所以你有6個冗餘代碼字)。

0

這更像是一個問題,你應該自己回答。我們不知道你有什麼樣的二進制數據,哪些字符可以在那裏,什麼不能。如果你在談論通用二進制數據 - 可能有位和字節以及字符的任意組合,所以沒有這種字符。

從另一個角度來看,你正在談論字符串。什麼樣的字符串? ASCII字符串?例如,ASCII碼的範圍非常有限,例如,您可以使用128。一些舊的協議使用SOH(\1)用於類似的目的。所以如果你確切知道你正在處理的是什麼字符串,可能會有一些解決辦法。

據我所知,後綴數組不能應用於任意的二進制數據(好吧,它可以,但它沒有任何意義)。