Bonjour à tous ,
La fonction
System.Convert.ToByte
ne prend que les entiers jusqu'à 127.
Je veux convertir un entier sur octets.
Connaissez-vous une méthode simple ?
D'avance merci pour vos réponses...
:)
Version imprimable
Bonjour à tous ,
La fonction
System.Convert.ToByte
ne prend que les entiers jusqu'à 127.
Je veux convertir un entier sur octets.
Connaissez-vous une méthode simple ?
D'avance merci pour vos réponses...
:)
siCode:
1
2 int i = ... ; short int si = i ; // si sur 2 octets de -32768 à 32767
Bonsoir et merci pour vos réponses.
Je dois écrire dans un fichier binaire une valeur numérique sur 2 octets.
Cette valeur est comprise entre 0 et 36600.
Pour écrire j'utilise la méthode classique write(tableau de byte)
Je bloque et je n'arrive vraiment pas ! :aie:
Help !
C'est pour sérialiser/désérialiser en binaire ça. Je pense que BitConverter.GetBytes est ce qu'il cherche.
Bonsoir et grand merci pour vos réponses.
Si j'utilise la méthode
BitConverter.GetBytes
j'obtiens un tableau de 4 valeurs.
Hors l'entier doit tenir sur 2 octets.
Exemple :
12458 => 30AA
Avec la méthode BitConverter.GetBytes
et en écrivant dans un fichier binaire avec write(byte[])
j'obtiens :
AA300000 :(
Cependant j'ai trouvé une méthode, pas très élégante à mon goût, mais quand on est "charette"...
Est-ce pertinent ? :?Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 static private byte[] ConvertToByte(Int32 valeur) { string HxVal = valeur.ToString("X4"); Int16 val1 = Int16.Parse(HxVal.Substring(0, 2), System.Globalization.NumberStyles.HexNumber); Int16 val2 = Int16.Parse(HxVal.Substring(2, 2), System.Globalization.NumberStyles.HexNumber); byte[] final = new byte[2]; final[0] = Convert.ToByte(val1); final[1] = Convert.ToByte(val2); return final; }
Tu as juste à traiter le résultat obtenu avec BitConverter.GetBytes pour l'écrire comme tu en as besoin. Faut regarder un peu plus loin que le bout de son nez hein :aie:
Bref, si ton entier tient sur 2 octets, tu dois juste écrire les 2 octets en question et pas tout le tableau. Une des surcharges de la méthode Write le permet, en précisant l'index de départ dans le tableau et le nombre d'éléments à écrire.
:oops:
Merci StormimOn pour ta réponse (mais j'ai un gros nez... et je débute en C#).
J'ai quand même une dernière question :
j'obtiens AA30 pour 12458 alors que ce devrait être 30AA ??
Il y a donc une inversion des 2 bytes lors de la méthode
BitConverter.GetBytes
??
Bonne soirée, :)
Les octets de poids faibles en premier : c'est conforme à la disposition en mémoire physique des entiers sur les processeurs des PC.
Bonjour !
Merci à tous pour vos réponses, elles ont été très enrichissantes !
8-)