0

属性 dsa-signature の octect 文字列値を読み取ろうとしています。デフォルトのネーミング コンテキスト プロパティからフィールドを取得しました。しかし、それはバイト配列であり、文字列に変換しようとすると、間違った出力が得られます。

正しい octect 変換を行う方法を知っている人はいますか?

DirectoryEntry entry = new DirectoryEntry("LDAP://DC=cobra,DC=net");
            PropertyValueCollection propCol = entry.Properties["dSASignature"];
            Console.WriteLine(propCol.PropertyName + " : " + propCol.Value);
            System.Text.UTF8Encoding enc = new System.Text.UTF8Encoding();
            string str = enc.GetString((System.Byte[])propCol.Value);
            Console.WriteLine("value : " + str);

前もって感謝します

4

1 に答える 1

0

しかし、バイト配列で、文字列に変換しようとすると、間違った出力が返されます。

これはバイト配列です。バイトの任意のシーケンス。これは、 UTF-8でエンコードされたテキストではありません。これはあなたが扱っているものです。

16進数でフォーマットされたバイトを表示する場合は、次を使用できます。

byte[] data = (byte[]) propCol.Value;
string hex = BitConverter.ToString(data);

より効率的に転送する必要があるがテキストとして転送する必要がある場合は、base64を使用できます...ただし、基本的には単なるバイナリデータであるため、理想的には、可能な限り長い間バイト配列として扱う必要があります。

于 2012-07-17T06:09:00.150 に答える