Estoy haciendo la aplicación en c#.Aquí quiero convertir una matriz de bytes que contiene los valores hexadecimales a decimales.Supongamos que tengo una matriz de bytes como

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

Aquí quiero convertir el hexagonal de la matriz de número decimal como quiero concatenar primero de todos los bytes de valores como 4E5E7549 y después de que la conversión de ese número decimal.No quiero convertir cada número hexadecimal a decimal.El equivalente decimal de que el número hexadecimal 1314813257.Así que por favor me ayude.Gracias de antemano.

  • BitConverter.ToInt32() se hizo para ello. Aunque usted tiene que observador «little-endian» orden de los bytes. De la matriz.Reverse() si es necesario.
InformationsquelleAutor user1051703 | 2011-11-17

5 Comentarios

  1. 8

    La BitConverter.ToInt32 método es una buena manera de hacer esto

    if (BitConverter.IsLittleEndian)
        Array.Reverse(array); //need the bytes in the reverse order
    int value = BitConverter.ToInt32(array, 0);
    • Gracias….!Obtuve la respuesta
    • Verdadero. Tener cuidado.
    • revertir da absolutamente necesario, pero yo no podía entender por qué tenemos que hacer marcha atrás, yo puede ser que falte algún momento, pero en mi opinión el último byte de la matriz debe representar el byte bajo de la serie, ¿verdad?
    • la respuesta aquí betterexplained.com/articles/…
  2. 1

    hexadecimal y decimal, son sólo diferentes formas de representar los mismos datos que quieres algo como

    int myInt = array[0] | (array[1] << 8) | (array[2] << 16) | (array[3] <<24)
    • he intentado eso pero tengo un error como operador || no puede ser aplicado a los operandos de tipo byte y int
    • uy, fijo, de modo que no lógica ors más.
  3. 1

    He aquí un método para convertir una cadena que contiene un número hexadecimal a decimal entero:

    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;
    }

    Usted puede, a continuación, la cadena de las piezas y se las pasan a esta función para obtener los valores decimales. Si usted está usando valores muy grandes, es posible que desee cambiar de int a ulong.

    • Entero Decimal?
    • Sí, un entero decimal. Decimal significado de base 10.
  4. 0

    Mente el orden de los bytes.

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

Dejar respuesta

Please enter your comment!
Please enter your name here