cs_yvesyves
Messages postés561Date d'inscriptionsamedi 10 janvier 2004StatutMembreDernière intervention11 octobre 2010
-
11 févr. 2007 à 20:24
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 2021
-
12 févr. 2007 à 10:01
Bonjour,
Je cherche une fonction simple permettant de convertir un entier non signé UShort ou UInt16 sous un tableau de bytes Byte. Je sais que celui-ci est codé sous 2 octets et j'aimerais les récuperer sous 2 valeurs de type Byte (dans un tableau).
Merci de votre réponse. (Je suis sous Vb.net mais j'accepte les réponses de VB6)
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 11 févr. 2007 à 21:32
Ni Ushort no Uint16 ne veulent dire quelque chose sous VB (et tu es sous le forum VB6..., pas C++)
Un entier non signé s'exprime sous VB en utilisant la fonction Abs
Si tu développes sous VB.Net, tu devrais interroger le forum concerné, en ce qui concerne la transposition, en tableau de bytes, de Abs(nombre), car la syntaxe y est peut-être différente.
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 11 févr. 2007 à 21:38
Juste un rappel : les nombres de type integer (sur 2 octets en 16 bits) ne sont pas les seuls entiers. Ceux de type long le sont aussi (sur 4 octets, en 32 bits)
'passer par un fichier
Private Sub Command4_Click()
Dim n As Integer
Dim b(1) As Byte
n = &HABCD
Open "C:\temp.txt" For Binary As #1
Put #1, , n
Close #1
Open "C:\temp.txt" For Binary As #1
Get #1, , b(1)
Get #1, , b(0)
Close #1
MsgBox Hex$(b(1)) ' --> AB
MsgBox Hex$(b(0)) ' --> CD
Kill "C:\temp.txt"
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 11 févr. 2007 à 22:01
ce qui doit pouvoir marcher tant sous VB6 que VB.net reste l'utilisation des fonctions LoByte et Hibyte de la librairie TLBINF32 de k'Api de Windows pour les entiers sur 2 octets en 16 bits, en conjugaison avec l'utilisation des fonctions loword et hiword de la même librairie pour les entiers exprimés sur 4 octets en 32 bits.
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 12 févr. 2007 à 10:01
vi, on s'en sert bel et bien BruNews, nul doute...
mais une seule fois pour toutes... efficace si on doit faire cette tache régulièrement.
si on a qu'une fois a le faire, faudrait faire :
CopyMemory MonTableau(0), MonEntier, 2
(a voir si plus rapide que des masques/calculs)
petites précision pour YvesYves, concernant la manipulation de SafeArrays :
on dit a notre tableau de taper dans notre Integer,
ensuite, qu'on modifie MonTableau(0) MonTableau(1) ou MonEntier, on manipule la même zone mémoire, la passage de l'un a l'autre se fait donc en coulisses...