Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将4字节十六进制转换为十进制值_C# - Fatal编程技术网

C# 将4字节十六进制转换为十进制值

C# 将4字节十六进制转换为十进制值,c#,C#,我有一个硬件,需要设置某个参数才能正常工作。我将使用C#将值发送到设备。设备只接受一个十进制值;但是,告诉我输入的值是以4字节十六进制数的形式提供给我的。我知道如何将一个十六进制转换为十进制,但我不知道如何转换4个字节 我给出的十六进制值如下:0x00、0x00、0x1B、0x03。我应该采取什么步骤将其转换为单个十进制值?为了获得额外的学分,如果我在“程序员模式”下使用Windows calc,会有办法解决这个问题吗(我也在尝试理解这样做所需的概念) 仅供参考,硬件以以下方式描述此参数: Si

我有一个硬件,需要设置某个参数才能正常工作。我将使用C#将值发送到设备。设备只接受一个十进制值;但是,告诉我输入的值是以4字节十六进制数的形式提供给我的。我知道如何将一个十六进制转换为十进制,但我不知道如何转换4个字节

我给出的十六进制值如下:
0x00、0x00、0x1B、0x03
。我应该采取什么步骤将其转换为单个十进制值?为了获得额外的学分,如果我在“程序员模式”下使用Windows calc,会有办法解决这个问题吗(我也在尝试理解这样做所需的概念)

仅供参考,硬件以以下方式描述此参数:

Size    4   
Default 8

Name    Report type send in Reporting Group 1 - Defines the type of report sent for the Reporting Group 1.

Type    rangemapped

Values  
1     ->    Battery Report
2     ->    MultiSensor Report for the whole device
4     ->    Meter Report for Watt for the whole device
8     ->    Meter Report for kWh for the whole device
256   ->    Meter Report for Watt for clamp 1
512   ->    Meter Report for Watt for clamp 2
1024      ->    Meter Report for Watt for clamp 3
2048      ->    Meter Report for kWh for clamp 1
4096      ->    Meter Report for Watt for clamp 2
8192      ->    Meter Report for kWh for clamp 3

您可以为此使用BitConverter类

byte[] bytes = { 0, 0, 0, 25 };

// If the system architecture is little-endian (that is, little end first), 
// reverse the byte array. 
if (BitConverter.IsLittleEndian)
    Array.Reverse(bytes);

int i = BitConverter.ToInt32(bytes, 0);

您需要知道十六进制数本身是否正确。如果您当前的系统架构(由BitConverter.IsLittleEndian表示)与十六进制数序列的endianness不匹配,则需要调用Array.Reverse,如示例所示(该示例假设字节是big-endian)

额外学分

这四个数字表示四个“基256”值(与基0x100值相同)。假设数字是大端数,您可以自己进行计算,如下所示:

0x00, 0x00, 0x1B, 0x03 =>

0x0 * 256^3 + 0x0 * 256^2 + 0x1b * 256^1 + 0x03 * 256 ^ 0 =
0 * 16777216 + 0 * 65536 + 27 * 256 + 3 * 1 =
6915  

您好,您能告诉我如何将十进制转换成4字节的十六进制吗?比如00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00请以新问题的形式提问。您必须在问题中指定是要使用大端还是小端表示。