Hexadécimal conversion how to do exemple ?

Soyez le premier à donner votre avis sur cette source.

Snippet vu 836 fois

Contenu du snippet

Un byte en américain représente un octet de 8 Bits en Français,
La fonction SHL permet de faire tourner les bits d'un mot binaire vers la droite et faire faire rentrer dans le langage Pascal le petit bit de Carry vers la gauche quand il est à zéro. Si vous voulez vraiment connaître le langage d'assemblage de votre microprocesseur, il faudra bien un jours étudier les Opcode (code opérationnel des langage de l'assembleur) du code X86 par exemple. Et ne pas croire que ces codes vienne du langage Php, mais des Mnémoniques des langage de l'assembleur.

La codification hexadécimale est très pratique pourquoi ? elle permet aisément de représenter 4 bits par un seul caractère.

La combinaison de quatre bits permet de chiffrer 2 à la puissance 4 (2^4) soit 2 fois 2 fois 2 fois 2=16.

Cette représentation permet alors grâce aux 10 chiffres et à 5 lettres de (A à F) de montrer un demi-octet et comme un octet est constitué de Huit bits, deux caractères hexadécimaux permettent d'indiquer facilement ce nombre binaire avec 256 possibilités en décimal.


unit hexadecimal;

uses windows;

Interface

function Hexbyte(b:byte):string;
procedure Hexbyte_pchar(b:byte; pc:pchar);
function HexWord(w: Word):string;
function Hexlongint_24bits(color:tcolorref):string;
function Hexlongint(long: longint):string;
function Power(a:real;b:integer):real;
function Hexvalue(hex:string):longint;


Implementation

const hexChars: array [0..$F] of Char='0123456789ABCDEF';

function Hexbyte(b:byte):string;
begin
hexbyte:=hexChars[b shr 4]+hexChars[b and $F];
end;

procedure Hexbyte_pchar(b:byte; pc:pchar);
begin
pc[0]:=hexChars[b shr 4]; //Shift Right is equivalent with b div 16
pc[1]:=hexChars[b and $F]; //Masque des 4 premier bits
pc[2]:=#0;
end;

function HexWord(w: Word):string;
begin
hexword:=hexbyte(hi(w))+hexbyte(lo(w));
end;

function Hexlongint_24bits(color:tcolorref):string;
begin
Hexlongint_24bits:=Hexbyte(getrvalue(color))+Hexbyte(getgvalue(color))+Hexbyte(getbvalue(color));
end;

function Hexlongint(long: longint):string;
begin
Hexlongint:=hexword(long shr 16)+hexword(long and $ffff)
end;

function Power(a:real;b:integer):real;
	var i:integer;
		n:real;
	begin
	n:=1.0;
	for i:=1 to b do n:=n*a;
	power:=n;
	end;

function Hexvalue(hex:string):longint;
	var i:integer;
	val:longint;
	c:char;
	begin
	val:=0;
	for i:=length(hex) downto 1 do
		begin
		c:=upcase(hex[i]);
		case c of
			'0'..'9': val := round( val + ( ord(c) - ord('0') ) * power(16,length(hex)-i));
			'A'..'F': val := round( val + ( ord(c) - ord('A') + 10 ) * power(16,length(hex)-i));
			end;
		end;
	HexValue := val;
	end;
	

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.