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

问题描述:

我正在创建一个应用程序,该应用程序将监视特定注册表项值的更改并将这些更改写入文本文件。将字节数组转换为分隔字符串的原始字节值

目前我可以监视这些变化,并知道特定值何时发生变化并收集这些值中保存的数据。我目前遇到的问题是数据的返回类型是字节,我希望将其转换为最初用于显示的字符串,因此我知道它会返回正确的值,然后可以将其保存到文本文件中。

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

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

+0

右我现在已经改变了以下内容:字节[]字节=(字节[])key.GetValue( e.RegistryValueC hangeData.ValueName); string str = Encoding.ASCII.GetString(bytes); 我在这里的问题是,字符串是乱码,并且什么时候应该显示。 – manemawanna 2009-10-29 14:43:44

右键我现在已经能够通过一个字节数组存储注册表值,然后将每个部分来解决这个该阵列为一个字符串的,使用以下代码:

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]); 
      } 

感谢所有建议

你首先需要决定什么编码字节在转换为字符串之前..

然后:

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

这取决于字节是什么。

你需要弄清楚什么是从生成encoding字节,然后写是这样的:

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

根据如何字节被做了,你可能需要使用或Encoding.GetEncoding

+1

OP究竟在寻找什么。 :D +1 – 2009-10-29 13:05:54

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

而不是使用一个specidief编码,使用系统默认的一个:

public string ReadBytes(byte[] rawData) 
    { 
     //the encoding will prolly be the default of your system 
     return Encoding.Default.GetString(rawData); 
    } 
+0

这将使用系统的当前ANSI代码页。不能保证数据在其中编码。 http://msdn.microsoft.com/en-us/library/system.text.encoding.default.aspx – SLaks 2009-10-29 13:10:57