![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подскажите пожалуйста как преобразовать Hex->Bin [D7, WinXP]
Fresh © (2004-12-20 12:11:00)Зравствуйте.
Делаю так:
procedure TForm1.Button1Click(Sender: TObject);
var
binary: pchar;
begin
pba := stralloc(255);
HexToBin(pchar(edit1.Text), binary, 8);
edit2.Text := binary;
strdispose(binary);
end;
У меня в edit2 абракадабра получается... а не единички и нолики :(
Как быть...
begin...end (2004-12-20 14:14:00) [1]Вставлю и я свои пять копеек :-)
function HexToBin(Hex: String): String;
var
Value: Cardinal;
begin
Hex := '$' + Hex;
try
Value := StrToInt(Hex);
while Value <> 0 do
begin
Result := IntToStr(Value mod 2) + Result;
Value := Value div 2
end
except
Result := EmptyStr
end
end.
[4] всё же красивее, мне понравилось :-)
TUser (2004-12-20 13:26:00) [2]Примерно так
const hexs: array [0..15] of char =
{'0','1','2'...'9','a','b'...'f'};
{Вернет a -> 1010}
function MyHehToBin(S: string): string;
var i,j:integer;
f:boolean;
function Bin(C: integer): string;
begin
result:=0;
while C > 0 do begin
if C mod 2 = 0 then
result:=result+'1'
else
result:=result+'0';
C:=C shr 1;
end;
while length(result) < 4 do
result:='0'+result;
end;
begin
i:=1; result:=''; f:=true;
while f and (i < length(S)) do begin
j:=0; // f:=true;
while f and (j < 16) do
if hexs[j] = S[i] then
f:=false
else inc (j);
f:=not f;
if f then
result:=result+Bin(j)
else raise Exception.Create('Error in '+S);
inc (i);
end;
end;
Fresh (2004-12-20 13:15:00) [3]>> Всем
Если кому надо, вот функция:
function HexToBin(Hexadecimal: string): string;
const
BCD: array [0..15] of string =
('0000', '0001', '0010', '0011', '0100', '0101', '0110', '0111',
'1000', '1001', '1010', '1011', '1100', '1101', '1110', '1111');
var
i: integer;
begin
for i := Length(Hexadecimal) downto 1 do
Result := BCD[StrToInt('$' + Hexadecimal[i])] + Result;
end;
Fresh (2004-12-20 13:08:00) [4]>> MacroDenS ©
Я то сам в таких вещах не силен. Не могли бы Вы исходничек подкинуть?
MacroDenS (2004-12-20 12:57:00) [5]А можно и самому функцию написать, дабы это не очень сложно.
TUser (2004-12-20 12:21:00) [6]HexToBin не для этого - помсотри его реализацию