¿Cómo convierto un int a dos bytes en C#?¿Cómo convierto un int a dos bytes en C#?
Respuesta
Suponiendo que sólo quiere los bytes bajos:
byte b0 = (byte)i,
b1 = (byte)(i>>8);
Sin embargo, desde 'int' es 'Int32' que deja 2 bytes más sin capturar.
Esta es mi solución. Mucho más rápido que BitConverter. – Joshua
@Joshua, hice un benchmarking rápido (Release build, 50000000 iterations, Stopwatch y prueba completa repetida dos veces para eliminar varios artefactos) y la diferencia entre crear una matriz y usar Bit-Masking vs. llamar a BitConverter es aproximadamente 1ns por llama a mi máquina Si elimina la creación de la matriz (solo obtenga los dos bytes), la diferencia es de aproximadamente 14ns. –
No dudo de sus puntos de referencia. BitConverter es lento en comparación porque tiene que asignar matrices. Si puedo detectar previamente el tamaño de mi matriz para miles de enteros, puedo ahorrar una cantidad de tiempo no trivial. – Joshua
Puede usar BitConverter.GetBytes para obtener los bytes que comprenden un Int32. Habrá 4 bytes en el resultado, sin embargo, no
2.Otra manera de hacerlo, aunque no tan elegante como otros métodos:
Int32 i = 38633;
byte b0 = (byte)(i % 256);
byte b1 = (byte)(i/256);
¿Es un Int16?
Int16 i = 7;
byte[] ba = BitConverter.GetBytes(i);
Esto solo tendrá dos bytes.
- 1. ¿Cómo convierto un decimal a un int en C#?
- 2. ¿Cómo convierto una cadena a un tipo int en C#?
- 3. ¿Cómo convierto int? en int
- 4. Objective-C, ¿cómo convierto un doble en un int?
- 5. ¿Cómo convierto una matriz de bytes C# en datos estructurados?
- 6. ¿Cómo convierto una matriz de bytes a Base64 en Java?
- 7. ¿Cómo convierto Int/Decimal para que flote en C#?
- 8. ¿Cómo convierto un valor enum de "Llaves" a un carácter "int" en C#?
- 9. Cómo asegurarse de que un int es de 4 bytes o 2 bytes en C/C++
- 10. C# int conversión de bytes
- 11. ¿Cómo convierto un byte a un largo en Java?
- 12. OCaml - ¿Cómo convierto int en una cadena?
- 13. Convertir 4 bytes a int
- 14. Cómo convertir int a enum en C++?
- 15. Int matriz de bytes a
- 16. ¿Convertir int a una matriz de bytes en C?
- 17. conversión de bytes a int en Java
- 18. ¿Cómo convierto de int a Long en Java?
- 19. ¿Cómo convertir una matriz de bytes a una matriz int?
- 20. ¿Cómo convierto bitset a una matriz de bytes/uint8?
- 21. ¿Cómo convierto un CString a un doble en C++?
- 22. ¿Lees dos bytes en un número entero?
- 23. Obtenga dos bytes más bajos de la variable int
- 24. ¿Cómo convierto byte [] a stream en C#?
- 25. ¿Cómo convierto una matriz bidimensional C# a un objeto JSON?
- 26. Conversión de un int a un valor hexadecimal de 2 bytes en C
- 27. ¿Cómo convierto un Enum a un Int para usar en una operación Expression.Equals?
- 28. ¿Cómo convierto una matriz de bytes en un archivo y lo abro automáticamente con C#?
- 29. ¿Cómo convertir una matriz de bytes int a little endian?
- 30. Bytes a binario en C
¿Qué parte de la int? Dos bytes no son suficientes para codificar un valor entero entero de 32 bits. – dtb
'int' requiere 4 bytes para el almacenamiento. ¿Desea perder la información en los MSB? –
¿Quién el * bip * downvoted esto. Esta es una pregunta útil e interesante ya que la forma C de repente no funciona sin una buena razón en C# y las API obvias no existen (BitConverter es lento y * roto * de muchas maneras). – Joshua