[英]C# Binary Array “{ 84, 01, 00, 00 }” changed to “54 01 00 00” in Windows Registry
我正在使用 C# 將以下二進制值寫入系統注冊表:
byte[] valueToSet = { 84, 01, 00, 00 };
Registry.SetValue(keyName, "00036601", valueToSet);
// returns void as expected.
當我使用 regedit 查看寫入的值時,我看到顯示的值為 54 01 00 00。這是不正確的
相反,當我在注冊表中手動將值設置為 84,01,00,00 並運行此代碼時
object ttt = Registry.GetValue(keyName, "00036601", null);
// returns 132, 1, 0, 0
這是一個Endian問題嗎? 解決此問題的正確方法是什么?
這是一個十六進制問題。 RegEdit 以十六進制顯示值,而您在 C# 中使用十進制。
這兩個值是等價的:
0x54 == 84
注冊表編輯器以十六進制顯示該值。 十進制值 84 等於十六進制值 0x54,十六進制 0x84 等於十進制 132。
我認為您正在嘗試以hex指定文字。 但是,如果沒有0x
十六進制前綴,編譯器會將它們解釋為decimals 。
試試這個:
byte[] valueToSet = { 0x84, 0x01, 0x00, 0x00 };
二進制類型的注冊表中顯示的值采用十六進制表示法。 十進制 84 == 十六進制 0x54。
有趣的是, 84
(十進制)== 54
(十六進制)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.