Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
3-1102061042
pkm
2004-12-03 11:04
2005.01.02
Не по теме, но на другие темы форума не могу зайти: ошбка!!!


1-1103410754
tazik
2004-12-19 01:59
2005.01.02
Введение своего языка в свою программу


6-1097494603
DenKop
2004-10-11 15:36
2005.01.02
Сертификаты Windows


14-1103182885
Dmitriy O.
2004-12-16 10:41
2005.01.02
Почему чем ближе к карпатам тем более Украинцы не любят Русских


4-1100606813
FRick
2004-11-16 15:06
2005.01.02
Пройгрование AVI файлов в любой системе





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский