c#二进制数组"{84, 01, 00, 00}"改为"54 01 000 000 &qu
本文关键字:quot qu 改为 二进制 数组 | 更新日期: 2023-09-27 18:02:26
我使用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。
我想你是想在十六进制中指定文字。但是,如果没有0x
十六进制前缀,编译器将它们解释为小数。
试试这个:
byte[] valueToSet = { 0x84, 0x01, 0x00, 0x00 };
注册表中显示的二进制类型的值是十六进制表示法。十进制84 ==十六进制0x54
值得注意的是84
(十进制)== 54
(十六进制)