PDA

Ver la Versión Completa : bits de un char


mauqu
12-06-2007, 16:42:53
Estimados, es posible leer los bits de un char uno a uno ?

gracias

Mau

Mick
12-06-2007, 17:17:40
Si, con algo parecido a esto:



var
i:integer;
car:char;
asc:integer;
begin
car:= 'A';
asc:= ord(car);
for i:=7 downto 0 do begin
if (asc AND 1)=1
then ShowMessage('El Uno')
else ShowMessage('El Cero');
asc:= asc SHR 1;
end;
end;



Saludos

cHackAll
12-06-2007, 22:30:16
Lo de Mick es es la idea, pero les dejo una funcion un poco mas útil para estos casos:


function IntToBin(Value, Digits: Cardinal): string;
var Bit: Cardinal;
begin
Bit := 1;
while Digits <> 0 do
begin
Result := Char(Byte((Value and Bit) <> 0) + Ord('0')) + Result;
Bit := Bit shl 1;
Dec(Digits);
end;
end;


El modo de empleo es identico al de la funcion IntToHex de la unidad SysUtils, y para obtenerlo de un char, simplemente haces algo como ésto:


Caption := IntToBin(Byte('@'), 8);


Espero les sirva, saludos!