0

我正在尝试读取属性 dsa-signature 的八进制字符串值。我从默认命名上下文属性中获得了该字段。但是它在字节数组中,当我尝试将其转换为字符串时,它会给出错误的输出。

有谁知道如何进行正确的八进制转换?

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 编码的文本,这就是您对待它的方式。

如果要显示格式为十六进制的字节,可以使用:

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

如果您需要更有效地传输它但作为文本,您可以使用 base64... 但理想情况下,您应该尽可能长时间地将其视为字节数组,因为从根本上说它只是二进制数据。

于 2012-07-17T06:09:00.150 回答