2008-09-30 20 views
7

En C y C++ puedes decirle al compilador que un número es 'largo' colocando una 'l' al final del número. por ejemplo, x largo = 0 l;¿Cómo convertir un número a un byte?

¿Cómo puedo decirle al compilador de C# que un número es un byte?

+0

me gustan las respuestas, pero está lanzando el número a un byte lo mismo que declarar el número como un byte? – Robert

Respuesta

9

De acuerdo con la C# language specification no hay forma de especificar un byte literal. Tendrás que lanzar al byte para obtener un byte. Su mejor apuesta es, probablemente, para especificar en hexadecimal y arrojado, como esto:

byte b = (byte) 0x10; 
+2

¿Está '(byte)' lanzando un "no-op"? ¿O es cierto que al menos * se requiere algún tiempo *? – Pacerier

9
byte b = (byte) 123; 

a pesar de que

byte b = 123; 

hace lo mismo. Si usted tiene una variable:

int a = 42; 
byte b = (byte) a; 
+0

literal entero se convertirá implícitamente de int a byte, por lo que no es necesario poner (byte) el molde antes del número. En caso de que alguien haya pasado por alto la lógica del ejemplo anterior. –

4

Recuerde, si lo hace:

byte b = (byte)300; 

no va a funcionar de la forma esperada.

+5

La verdad de esa afirmación depende de mis expectativas ;-) – phoog

+3

@casademora elabora sobre eso, ¿cómo va a ser el resultado? – Pacerier

+0

Un byte solo puede almacenar números del 0 al 255 (1111 1111 = 255). Este número no se puede almacenar en un byte, por lo que se "truncará" en un byte. –

1

No hay necesidad de decirle al compilador. Puede asignar cualquier valor válido a la variable de bytes y el compilador está bien con eso: no hay sufijo para byte.

Si desea almacenar un byte en un objeto que tiene que emitir:

object someValue = (byte) 123; 
Cuestiones relacionadas