2011-01-24 134 views
2

BinaryASCII數據類型是否已在C#2.0中定義?我計劃檢測幾個變量是二進制或ASCII或整數(sbyte,字節,短,ushort,長,ulong)類型。關於C#數據類型的問題

我可以使用typeof(sbyte)等。

但是我沒有實現這個typeof(binary)typeof(ascii)。 我需要的是這種類型的函數來檢測變量是二進制還是ASCII類型?

[更新]

  format code Octal 
Binary   001000  10 
ASCII   010000  20 
+0

.NET中沒有Binary或Ascii類型。你的變量將會是什麼類型? – 2011-01-24 07:47:27

+2

如何在更高級別解釋您的問題?一個好的鏈接:http://blogs.msdn.com/b/oldnewthing/archive/2006/03/23/558887.aspx – 2011-01-24 07:47:57

回答

3

通常你會存儲在一個字符串文本數據,並在byte[]二進制數據。 不要嘗試通過應用任意編碼將二進制數據存儲在字符串中。例如,如果您嘗試使用Encoding.UTF8.GetString(binaryData),那麼您很可能無法再獲取原始數據。

如果你需要在一個字符串中存儲二進制數據,你應該使用類似Convert.ToBase64String(然後Convert.FromBase64String)的東西,它在字符串中每4個字符存儲3個字節的二進制數據。

如果您需要將數據存儲爲字符串原始數據的類型,您應該單獨存儲類型,或者保留一個複合形式,如「type:data」。示例字符串可能是:

int:10 
string:10 // The digits 1 and 0, but originally as text, not a number 
binary:hFed234= // Base-64-encoded data 
1

您需要嘗試將其解析爲適合的數據類型。優先設置它們。

喜歡的東西:

1) Try to parse integer, if fail continue 
2) Try to parse text, if fail continue 
3) Save binary 

要檢測編碼見Determine a string's encoding in C#