关于C#数据类型的问题

时间:2011-01-24 07:44:33

标签: c# types c#-2.0

是否在C#2.0中定义了BinaryASCII数据类型?

我计划检测几个变量是Binary或ASCII或Integer(sbyte,byte,short,ushort,long,ulong)类型。

我可以使用typeof(sbyte)等。

但我没有按照typeof(binary)typeof(ascii)来实施。 我需要的是像这种类型的函数来检测变量是二进制还是ASCII类型?

[更新]

           format code    Octal
Binary         001000      10
ASCII          010000      20

3 个答案:

答案 0 :(得分: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 :(得分:2)

答案 2 :(得分: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#