2 votes

Comment convertir des int en byte array avec deux valeurs fixes ?

J'envoie cinq octets à un Arduino :

byte[] { 0xF1, byte1, byte2, byte3, 0x33 }

Les valeurs de byte1 , byte2 et byte3 sont dynamiques. Le premier et le dernier octet sont toujours les mêmes.

Les valeurs des octets sont comprises entre 0 et 255.

Comment puis-je simplement convertir int en octets et les mettre dans mon tableau d'octets ?

1voto

syned Points 897

Pour obtenir un tableau d'octets à partir d'un int, utilisez :

    byte[] intAsArrayOfBytes = BitConverter.GetBytes(yourInt);

alors vous pouvez copier les valeurs dans votre tableau

   byte[] { 0xF1, intAsArrayOfBytes[0], intAsArrayOfBytes[1], intAsArrayOfBytes[3], 0x33 }

ou si vous avez besoin de convertir le type int en type byte et vous savez que la variable entre 0..255 est utilisée :

   byte byte1 = (byte) int1;
   byte byte2 = (byte) int2;
   byte byte3 = (byte) int3;

0voto

akton Points 8688

En supposant que les ints sont compris entre 0 et 255, utilisez Convert.ToByte() . Par exemple :

int byte1;
int byte2;
int byte3;
byte[] bytes = new byte[]{ 0xF1, Convert.ToByte(byte1), 
    Convert.ToByte(byte2), Convert.ToByte(byte3), 0x33 };

0voto

Paolo Moretti Points 9519

Si vous êtes sûr que vos valeurs ne dépasseront pas la plage d'octets [0, 255] vous pouvez simplement les jeter :

byte[] b = { 0xF1, (byte)byte1, (byte)byte2, (byte)byte3, 0x33 }

En alternative, vous pouvez utiliser Convert.ToByte qui lance un OverflowException si les valeurs sont inférieures à 0 ou supérieures à 255.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X