number money c# string printf

money - string.format c# number



sprintf en C#? (3)

EDITAR: supongo que desea convertir el valor de un entero en una matriz de bytes y no el valor convertido a una cadena primero y luego a una matriz de bytes (verifique la respuesta de Marc para la última).

Para convertir un int a una matriz de bytes, puede usar:

byte[] array = BitConverter.GetBytes(17);

pero eso le dará una matriz de 4 bytes y no 2 (ya que un int es de 32 bits). Para obtener una matriz de 2 bytes, debe usar:

byte[] array = BitConverter.GetBytes((short)17);

Si solo quieres convertir el valor de 17 a dos caracteres, utiliza:

string result = string.Format("{0:00}", 17);

Pero como señaló Marcc, el resultado consumirá 4 bytes, ya que cada carácter en .NET tiene 2 bytes (UTF-16) (incluidos los dos bytes que contienen la longitud de la cadena, serán 6 bytes).

¿Hay algo similar a sprintf() en C #?

Me gustaría, por ejemplo, convertir un entero en una matriz de bytes de 2 bytes.

Algo como:

int number = 17; byte[] s = sprintf("%2c", number);


Resultó que lo que realmente quería era esto:

short number = 17; System.IO.BinaryWriter writer = new System.IO.BinaryWriter(stream); writer.Write(number); writer.Flush();

La clave aquí es la función Write de la clase BinaryWriter. Tiene 18 sobrecargas, convirtiendo diferentes formatos en una matriz de bytes que escribe en la secuencia. En mi caso, tengo que asegurarme de que el número que deseo escribir se mantenga en un tipo de datos corto, esto hará que la función de escritura escriba 2 bytes.


string s = string.Format("{0:00}", number)

El primer 0 significa "el primer argumento" (es decir, el número); el 00 después de los dos puntos es el especificador de formato (2 dígitos numéricos).

Sin embargo, tenga en cuenta que las cadenas .NET son UTF-16, por lo que una cadena de 2 caracteres es de 4 bytes, no 2

(editar: pregunta cambiada de string a byte[] )

Para obtener los bytes, use Encoding :

byte[] raw = Encoding.UTF8.GetBytes(s);

(obviamente, diferentes codificaciones pueden dar resultados diferentes; UTF8 dará 2 bytes para estos datos)

En realidad, una versión más corta del primer bit es:

string s = number.ToString("00");

Pero la versión de string.Format es más flexible.