2011-01-24 14 views
2

BinaryASCIIデータ型がC#2.0で定義されていましたか?C#データ型の質問

私はいくつかの変数がバイナリまたはASCIIまたはInteger(sbyte、byte、short、ushort、long、ulong)型であることを検出する予定です。

私はtypeof(sbyte)を使用できます。

しかし、これはtypeof(binary)またはtypeof(ascii)として実装できませんでした。 私が必要とするのは、変数がバイナリ形式かASCII形式かを検出するために、このtypeof関数のようなものですか?

[更新]

  format code Octal 
Binary   001000  10 
ASCII   010000  20 
+0

.NETにはバイナリまたはアスキータイプはありません。あなたの変数はどんなタイプになるでしょうか? –

+2

あなたの問題をより高いレベルで説明するのはどうですか?良いリンク:http://blogs.msdn.com/b/oldnewthing/archive/2006/03/23/558887.aspx –

+0

私の変数は現在文字列です。いくつかのselect case文を検証する必要があります。 –

答えて

3

は、通常は、文字列内のテキストデータを格納し、byte[]内のバイナリデータです参照エンコーディングを自動検出するには

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

:よう

何か。 任意のエンコーディングを適用してバイナリデータを文字列に格納しないでください。たとえば、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 
+0

実際には、変数はすでにmy validateFunction(string myVariable)に転送されています。 (この形式として)。それから私は未知の変数を処理し、それがデータ型であることを見いだす必要があります。 –

+0

@Nano HE:元のタイプを正確に復元することはできません。「10」は数字10を表すことができます.2桁の数字を表すことができます。バイナリデータ*があなたに渡された場合、テキストに? –

+0

あなたのコメントと返信をありがとう。私は、コード化されたルールの考えを持っていない。つまり、ValidateFun(EnumTypes aType、string myVariable)はこのフォームとして設計できます。 'myVariable'が' aType'( 'EnumTypes.ASCII'または' EnumTypes.Binary')であることを検証する必要があります。次にtrueまたはfalseを返します。 –