Преобразование шестнадцатеричных чисел в целыеDelphi , Синтаксис , ПреобразованияПреобразование шестнадцатеричных чисел в целые
Оформил: DeeCo function HexToInt(s: string): Longword; var b: Byte; c: Char; begin Result := 0; s := UpperCase(s); for b := 1 to Length(s) do begin Result := Result * 16; c := s[b]; case c of '0'..'9': Inc(Result, Ord(c) - Ord('0')); 'A'..'F': Inc(Result, Ord(c) - Ord('A') + 10); else raise EConvertError.Create('No Hex-Number'); end; end; end; procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage(IntToStr(StrToHex('AAF1'))); // > 43761 end; {*************************************************} procedure HexToInt(s: string): Integer; begin Result := StrToInt('$' + s); end; {*************************************************} function HexToInt(strHexValue : string) : Integer; var c,l : integer; begin Val(strHexValue, l, c); Result := l; end; procedure TForm1.Button2Click(Sender: TObject); begin ShowMessage(IntToStr(HexToInt('$EAD1'))); end; {***************************************************} unit HexConvert; { by Andre Fritzsche } interface uses SysUtils; // Wandelt Hexadezimalwert in Value zu Zahl function HexTo(Value: string): Longword; // Wandelt Bytewert aus Value in Hexadezimalwert (String) function ToHex(Value: Byte): string; overload; // Wandelt Wordwert aus Value in Hexadezimalwert (String) und // trennt Hi- und Lo-Byte durch Splitter function ToHex(Value: Word; Splitter: Char): string; overload; // Wandelt Longwordwert aus Value in Hexadezimalwert (String) und // trennt Hi- und Lo-Word durch Splitter function ToHex(Value: Cardinal; Splitter: Char): string; overload; implementation const HexTbl: string = '0123456789ABCDEF'; {------------------------------------------------------------------------------} function HexTo(Value: string): Longword; var intX, PosCnt: Byte; zwVal: Integer; begin Result := 0; PosCnt := 0; //Halb-Byte-Position for intX := Length(Value) - 1 downto 0 do begin //alle Zeichen von links durchlaufen zwVal := Pos(UpperCase(Value[intX + 1]), HexTbl) - 1; //prufen, ob Zeichen aus Value if zwVal >= 0 then begin //in HexTbl vorkommt und Position zu zwVal Result := Result + (zwVal shl (4 * PosCnt)); //zwVal 4*Halbbyteposition Bits nach links verschieben Inc(PosCnt); //Halb-Byte Position erhohen end; end; end; {------------------------------------------------------------------------------} function ToHex(Value: Byte): string; var zwVal: Byte; begin zwVal := (Value and $0F); //erstes (Lo)-Byte von Value maskieren Result := HexTbl[zwVal + 1]; //aus HexTbl zu Result zwVal := (Value and $F0) shr 4; //zweites (Hi)-Byte von Value maskieren und 4Bits nach rechts verschieben Result := HexTbl[zwVal + 1] + Result; //aus HexTbl vor Result end; {------------------------------------------------------------------------------} function ToHex(Value: Word; Splitter: Char): string; begin Result := ToHex(Byte(Lo(Value))); //LoByte umwandeln, zu Result Result := ToHex(Byte(Hi(Value))) + Splitter + Result; //HiByte umwandeln, zu Result, Trennzeichen davorsetzen end; {------------------------------------------------------------------------------} function ToHex(Value: Cardinal; Splitter: Char): string; var zwVal: Word; begin zwVal := Value and $0000FFFF; //loword maskieren Result := ToHex(Word(zwVal)); //umwandeln und zu Result zwVal := (Value and $FFFF0000) shr 16; //hiword maskieren Result := ToHex(Word(zwVal)) + Splitter + Result; //umwandeln und zu Result, Trennzeichen davorsetzen end; {------------------------------------------------------------------------------} end. Перевод на русский язык: Это сборник фрагментов кода на Delphi, демонстрирующих различные способы конвертации строк в шестнадцатеричном формате в целые числа и обратно. Функция HexToInt (первая версия)
Эта функция конвертирует строку в шестнадцатеричном формате в целое число. Она проходит по строке, умножая результат на 16 для каждого символа, и затем добавляет значение символа (преобразованное в его код ASCII минус код ASCII '0' или 'A'). Функция HexToInt (вторая версия)
Эта функция проще и использует встроенную функцию Функция HexToInt (третья версия)
Эта функция использует функцию Единица HexConvert
Эта единица содержит несколько функций, конвертирующих между строками в шестнадцатеричном формате и целыми числами. Функция В целом, эти кодовые фрагменты демонстрируют различные способы конвертации между строками в шестнадцатеричном формате и целыми числами в Delphi. Преобразование шестнадцатеричных чисел в целые: описаны несколько способов преобразования шестнадцатеричного представления чисел в целочисленное. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Преобразования ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |