Форум: "Основная";
Текущий архив: 2005.01.02;
Скачать: [xml.tar.bz2];
ВнизПодскажите пожалуйста как преобразовать Hex->Bin Найти похожие ветки
← →
Fresh (2004-12-20 12:11) [0]Зравствуйте.
Делаю так:
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 абракадабра получается... а не единички и нолики :(
Как быть...
← →
TUser © (2004-12-20 12:21) [1]HexToBin не для этого - помсотри его реализацию
← →
MacroDenS © (2004-12-20 12:57) [2]А можно и самому функцию написать, дабы это не очень сложно.
← →
Fresh (2004-12-20 13:08) [3]>> MacroDenS ©
Я то сам в таких вещах не силен. Не могли бы Вы исходничек подкинуть?
← →
Fresh (2004-12-20 13:15) [4]>> Всем
Если кому надо, вот функция:
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;
← →
TUser © (2004-12-20 13:26) [5]Примерно так
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;
← →
begin...end © (2004-12-20 14:14) [6]Вставлю и я свои пять копеек :-)
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] всё же красивее, мне понравилось :-)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.01.02;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.033 c