Tourner et des mots entiers


Cet article a été posté pour delphi3000.com
Parfois, il est nessescary à son tour les octets d'un entier. Ceci est connu comme le big-endian/little-endian problème, et se produit lorsque vous recevez des données d'un ordinateur à un autre ordre des octets:
Certaines machines organise des octets de gauche à droite.
d'Autres arrange de droite à gauche.
Delphi a mis en place un appel de fonction swap() qui permet de transformer des nombres entiers. Mais voici quelques exemples sur la façon de le faire vous-même.
// Tournage d'un smallint (16 bits signés)
fonction de i16( i : smallint ) : smallint
var
& nbsp & nbsp x1 : smallint
& nbsp & nbsp x2 : array[0..1] de l'octet absolue x1
& nbsp & nbsp x3 : array[0..1] de l'octet absolue je
begin
& nbsp & nbsp x2[0] := x3[1]
& nbsp & nbsp x2[1] := x3[0]
& nbsp & nbsp résultat := x1
fin
// Tournage d'un mot (16 bits non signé)
fonction r16( i : word) : mot
var
& nbsp & nbsp x1 : mot
& nbsp & nbsp x2 : array[0..1] de byte absolue x1
& nbsp & nbsp x3 : array[0..1] de l'octet absolue je
begin
& nbsp & nbsp x2[0] := x3[1]
& nbsp & nbsp x2[1] := x3[0]
& nbsp & nbsp résultat := x1
fin
// Tournage d'un longint (signé de 32 bits)
fonction de r32( i : longint) : longint
var
& nbsp & nbsp & nbsp x1 : longint
& nbsp & nbsp & nbsp x2 : array[1..4] of byte absolue x1
& nbsp & nbsp & nbsp x3 : array[1..4] of byte absolue je
begin
& nbsp & nbsp & nbsp x2[1] := x3[4]
& nbsp & nbsp & nbsp x2[2] := x3[3]
& nbsp & nbsp & nbsp x2[3] := x3[2]
& nbsp & nbsp & nbsp x2[4] := x3[1]
& nbsp & nbsp & nbsp résultat := x1
fin
voyez-vous le modèle?









Tourner et des mots entiers


Tourner et des mots entiers : Plusieurs milliers de conseils pour vous faciliter la vie.


Cet article a ete poste pour delphi3000.com
Parfois, il est nessescary a son tour les octets d'un entier. Ceci est connu comme le big-endian/little-endian probleme, et se produit lorsque vous recevez des donnees d'un ordinateur a un autre ordre des octets:
Certaines machines organise des octets de gauche a droite.
d'Autres arrange de droite a gauche.
Delphi a mis en place un appel de fonction swap() qui permet de transformer des nombres entiers. Mais voici quelques exemples sur la façon de le faire vous-meme.
// Tournage d'un smallint (16 bits signes)
fonction de i16( i : smallint ) : smallint
var
& nbsp & nbsp x1 : smallint
& nbsp & nbsp x2 : array[0..1] de l'octet absolue x1
& nbsp & nbsp x3 : array[0..1] de l'octet absolue je
begin
& nbsp & nbsp x2[0] := x3[1]
& nbsp & nbsp x2[1] := x3[0]
& nbsp & nbsp resultat := x1
fin
// Tournage d'un mot (16 bits non signe)
fonction r16( i : word) : mot
var
& nbsp & nbsp x1 : mot
& nbsp & nbsp x2 : array[0..1] de byte absolue x1
& nbsp & nbsp x3 : array[0..1] de l'octet absolue je
begin
& nbsp & nbsp x2[0] := x3[1]
& nbsp & nbsp x2[1] := x3[0]
& nbsp & nbsp resultat := x1
fin
// Tournage d'un longint (signe de 32 bits)
fonction de r32( i : longint) : longint
var
& nbsp & nbsp & nbsp x1 : longint
& nbsp & nbsp & nbsp x2 : array[1..4] of byte absolue x1
& nbsp & nbsp & nbsp x3 : array[1..4] of byte absolue je
begin
& nbsp & nbsp & nbsp x2[1] := x3[4]
& nbsp & nbsp & nbsp x2[2] := x3[3]
& nbsp & nbsp & nbsp x2[3] := x3[2]
& nbsp & nbsp & nbsp x2[4] := x3[1]
& nbsp & nbsp & nbsp resultat := x1
fin
voyez-vous le modele?


Tourner et des mots entiers

Tourner et des mots entiers : Plusieurs milliers de conseils pour vous faciliter la vie.
Recommander aux amis
  • gplus
  • pinterest

Messages récents

Commentaire

Laisser un commentaire

évaluation