2009-10-29 90 views
0

我正在創建一個應用程序,該應用程序將監視特定註冊表項值的更改並將這些更改寫入文本文件。將字節數組轉換爲分隔字符串的原始字節值

目前我可以監視這些變化,並知道特定值何時發生變化並收集這些值中保存的數據。我目前遇到的問題是數據的返回類型是字節,我希望將其轉換爲最初用於顯示的字符串,因此我知道它會返回正確的值,然後可以將其保存到文本文件中。

我問的原因是,在下次用戶登錄到系統時,將創建或更改這些密鑰以匹配以前的值。 (這樣做是爲了像當前使用強制配置文件一樣保存用戶首選項)。

如果有人有任何建議,將不勝感激。

+0

右我現在已經改變了以下內容:字節[]字節=(字節[])key.GetValue( e.RegistryValueC hangeData.ValueName); string str = Encoding.ASCII.GetString(bytes); 我在這裏的問題是,字符串是亂碼,並且什麼時候應該顯示。 – manemawanna 2009-10-29 14:43:44

回答

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

感謝所有建議

0

你首先需要決定什麼編碼字節在轉換爲字符串之前..

然後:

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

這取決於字節是什麼。

你需要弄清楚什麼是從生成encoding字節,然後寫是這樣的:

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

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

+1

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

0

System.Text.Encoding類有靜態方法字節轉換成字符串。在你的情況下,你會想要使用System.Text.Encoding.ASCII.GetString(字節)。根據需要使用其他編碼(UTF8,UTF16)。

0

而不是使用一個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

相關問題