簡體   English   中英

C# 二進制數組“{ 84, 01, 00, 00 }” 在 Windows 注冊表中更改為“54 01 00 00”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM