none
Convertir de int a byte array RRS feed

  • Pregunta

  • Hola, 

    realizo lo siguiente  y al convertir el int en byte array pensaba que aparecería el mismo numero en array de bytes y no es así, como podría realizar el cambio de int a byte array de alguna manera en la que se me mantenga el numero?

    Gracias, 

    int nSerie = 1234;
    int suma = 0;
    int multiplicacion = 0;
    int resultadoPassword = 0;
    byte[] intbytes = BitConverter.GetBytes(nSerie); //en vez de aparecer 1234 en array, me aparece intbytes[0] 210, intbytes[1] 4, intbytes[2] 0, intbytes[3] 0. 
    
    for (int j = 0; j < intbytes.Length; j++)
    {
         suma += intbytes[j]; 
    }
    

    • Editado an91 miércoles, 11 de noviembre de 2015 7:34
    miércoles, 11 de noviembre de 2015 7:34

Respuestas

  • int nSerie = 1234;
    int suma = 0;
    int multiplicacion = 0;
    int resultadoPassword = 0;
    
    byte[] intbytes = new byte[1 + (int)Math.Log10(nSerie)];
    
    for (int j = intbytes.Length - 1, n = nSerie; n > 0; n /= 10, j--)
    {
    	intbytes[j] = (byte)(n % 10);
    	suma += intbytes[j]; 
    }
    

    • Marcado como respuesta an91 miércoles, 11 de noviembre de 2015 13:05
    miércoles, 11 de noviembre de 2015 11:52

Todas las respuestas

  • 4 * 256 + 210 = 1234, luego es correcto que 1234 se represente con los los bytes {210, 4, 0, 0} en big endian.

    No entiendo lo que quieres hacer con los bytes que representan el núm ero 1234.

    miércoles, 11 de noviembre de 2015 7:52
  • yo lo que quería hacer era que el int que tengo con el numero 1234, se guardara en un array de la siguiente manera, inbytes[0] 1, inbytes[1] 2, inbytes[2] 3, inbytes[3] 4. 

    miércoles, 11 de noviembre de 2015 8:06
  • Hola:

    Primero convierte el valor a string y luego procesas los caracteres:

    byte[] intbytes = System.Text.Encoding.UTF8.GetBytes(nSerie.ToString());

    //intbytes = BitConverter.GetBytes(nSerie.ToString());

    Te convierte los 'caracteres' a bytes, ten en cuenta que valor del byte será el valor ASCII de cada numero, solo tienes que restar 48 (código ASCII del 0) y ya lo tienes.

    Un saludo

    • Propuesto como respuesta LG DES miércoles, 11 de noviembre de 2015 8:50
    miércoles, 11 de noviembre de 2015 8:36
  • y en vez de a array de bytes se puede realizar a alguna otro tipo char, float, etc... para conseguir lo que quiero. 

    Muchas gracias.

    miércoles, 11 de noviembre de 2015 8:41
  • int nSerie = 1234;
    int suma = 0;
    int multiplicacion = 0;
    int resultadoPassword = 0;
    
    byte[] intbytes = new byte[1 + (int)Math.Log10(nSerie)];
    
    for (int j = intbytes.Length - 1, n = nSerie; n > 0; n /= 10, j--)
    {
    	intbytes[j] = (byte)(n % 10);
    	suma += intbytes[j]; 
    }
    

    • Marcado como respuesta an91 miércoles, 11 de noviembre de 2015 13:05
    miércoles, 11 de noviembre de 2015 11:52