在Windows注册表中,C#二进制数组"{84,01,00,00}"已更改为"54 01 00 00"

goo*_*ate 2 c# registry binary

我正在使用C#将以下二进制值写入系统注册表:

  byte[] valueToSet = { 84, 01, 00, 00 };
  Registry.SetValue(keyName, "00036601", valueToSet);
  // returns void as expected.
Run Code Online (Sandbox Code Playgroud)

当我使用regedit查看写入值时,我看到显示的值为54 01 00 00.这是不正确的

相反,当我在注册表中手动将值设置为84,01,00,00时,运行此代码

object ttt = Registry.GetValue(keyName, "00036601", null);
// returns 132, 1, 0, 0
Run Code Online (Sandbox Code Playgroud)

这是Endian问题吗?解决这个问题的正确方法是什么?

tin*_*man 10

这是一个十六进制问题.RegEdit以十六进制显示值,您在C#中使用decimal.

这两个值是等价的:

0x54 == 84
Run Code Online (Sandbox Code Playgroud)


Sve*_*ven 7

注册表编辑器以十六进制显示值.十进制值84等于十六进制值0x54,十六进制0x84等于十进制132.