将字节数组转换为分隔的原始字节值字符串

时间:2009-10-29 11:58:40

标签: c# .net string registry

我正在创建一个应用程序,该应用程序将监视特定的注册表项值以进行更改,并将这些更改写入文本文件。

目前,我可以监控更改并了解特定值何时发生更改并收集这些值中保存的数据。我现在遇到的问题是数据的返回类型是Byte,我希望最初将它转换为String以便显示,所以我知道它返回正确的值然后可以保存到文本文件中。

我问的原因是,下次用户登录系统时,将创建或更改这些键以匹配先前的值。 (这样做是为了保存用户首选项,就像当前使用强制配置文件一样)。

如果有人有任何建议,我们将不胜感激。

5 个答案:

答案 0 :(得分:3)

取决于字节数。

您需要弄清楚从哪个encoding生成字节,然后写下这样的内容:

string str = Encoding.UTF8.GetString(bytes);

根据字节的制作方式,您可能需要使用Encoding.ASCIIEncoding.GetEncoding

答案 1 :(得分:0)

首先需要确定在转换为字符串之前字节的编码。

然后:

System.Text.Encoding enc = System.Text.Encoding.ASCII;
string myString = enc.GetString(myByteArray );

答案 2 :(得分:0)

System.Text.Encoding 类具有将字节转换为字符串的静态方法。在您的情况下,您将需要使用 System.Text.Encoding.ASCII.GetString(bytes)。根据需要使用其他编码(UTF8,UTF16)。

答案 3 :(得分:0)

使用系统的默认编码:

,而不是使用specidief编码
    public string ReadBytes(byte[] rawData)
    {
        //the encoding will prolly be the default of your system
        return Encoding.Default.GetString(rawData);
    }

答案 4 :(得分:0)

我现在能够通过将注册表值存储在字节数组中,然后使用以下代码将数组的每个部分添加到字符串中来解决此问题:

RegistryKey key = Registry.Users.OpenSubKey(e.RegistryValueChangeData.KeyPath);

            Byte[] byteValue = (Byte[])key.GetValue(e.RegistryValueChangeData.ValueName);

            string stringValue = "";

            for (int i = 0; i < byteValue.Length; i++)
            {
                stringValue += string.Format("{0:X2} ", byteValue[i]);
            }

感谢所有建议