Conversion of byte array containing hex values to decimal values

房东的猫 提交于 2019-12-18 13:37:46

问题


I am making application in c#.Here i want to convert a byte array containing hex values to decimal values.Suppose i have one byte array as

array[0]=0X4E;
array[1]=0X5E;
array[2]=0X75;
array[3]=0X49;

Here i want to convert that hex array to decimal number like i want to concatenate first all bytes values as 4E5E7549 and after that conversion of that number to decimal.I dont want to convert each separate hex number to decimal.The decimal equivalent of that hex number is 1314813257.So please help me.Thanks in advance.


回答1:


The BitConverter.ToInt32 method is a good way to do this

if (BitConverter.IsLittleEndian)
    Array.Reverse(array); //need the bytes in the reverse order
int value = BitConverter.ToInt32(array, 0);



回答2:


hex and decimal are just different ways to represent the same data you want something like

int myInt = array[0] | (array[1] << 8) | (array[2] << 16) | (array[3] <<24)



回答3:


Here's a method to convert a string containing a hexadecimal number to a decimal integer:

private int HexToDec(string hexValue)
{
    char[] values = hexValue.ToUpperInvariant().ToCharArray();
    Array.Reverse(values);
    int result = 0;
    string reference = "0123456789ABCDEF";

    for (int i = 0; i < values.Length; i++)
        result += (int)(reference.IndexOf(values[i]) * Math.Pow(16d, (double)i));

    return result;
}

You can then string the pieces together and pass them to this function to get the decimal values. If you're using very large values, you may want to change from int to ulong.




回答4:


Mind the byte order.

int num = 
    array[0] << 8 * 3 | 
    array[1] << 8 * 2 | 
    array[2] << 8 * 1 | 
    array[3] << 8 * 0;



回答5:


Instead of checking IsLittleEndian by yourself, you can use IPAddress.NetworkToHostOrder(value).

int value = BitConverter.ToInt32(array, 0);

value = IPAddress.NetworkToHostOrder(value);

See more:

https://docs.microsoft.com/de-de/dotnet/api/system.net.ipaddress.networktohostorder?redirectedfrom=MSDN&view=netframework-4.7.2#System_Net_IPAddress_NetworkToHostOrder_System_Int32_



来源:https://stackoverflow.com/questions/8166757/conversion-of-byte-array-containing-hex-values-to-decimal-values

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!