AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Regulärer Ausdruck für Hexzahlen

Ein Thema von Ghostwalker · begonnen am 30. Mär 2018 · letzter Beitrag vom 30. Mär 2018
Antwort Antwort
arnold mueller

Registriert seit: 27. Jul 2005
129 Beiträge
 
#1

AW: Regulärer Ausdruck für Hexzahlen

  Alt 30. Mär 2018, 15:07
In System.Classes gibt es BinToHex und umgekehrt.

http://docwiki.embarcadero.com/Libra...asses.HexToBin

Wenn man darum eine Wrapper Funktion baut, die String bzw. TBytes verarbeitet, wäre das relativ elegant.
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Regulärer Ausdruck für Hexzahlen

  Alt 30. Mär 2018, 16:26
Danke erstmal für eure Antworten. Da ich hier mit RegEx arbeiten möchte hab ich mal mit SProske Variante gearbeitet.

Das mit den "," in der Liste ist natürlich ein Tipp-Fehler gewesen Das es dafür eine eigene Klasse gibt
wusst ich nicht.

Tut auch soweit bis auf 2 Probleme:

1. Das $-Zeichen (oder eben nichts) sollte ein unabhängiger Match sein

also quasi
Code:
  Match 1: $
  Match 2: aa
  Match 3: BB
  Match 4: cc
2. Der zweite Teil (also quasi die Bytes) sollen min 1 max 8 sein so das
man das ganze im Zweifelsfall als einen Integer (Int64) umwandeln kann.
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
SProske

Registriert seit: 16. Feb 2015
Ort: Halle/S.
116 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#3

AW: Regulärer Ausdruck für Hexzahlen

  Alt 30. Mär 2018, 16:51
Na das wird.. unschön - so in etwa:

Delphi-Quellcode:
program HexCheck;

uses
  System.RegularExpressions, System.SysUtils;

const
  HEX_STRINGS: array[0..6] of string = ('$AA', '00', '$AA00BB11CC22DD33', 'AA00BB11CC22DD33', 'A', 'XX1100', '$AA00BB11CC22DD33EE');
var
  M: TMatch;
  S: string;
  I: Integer;
begin
  for S in HEX_STRINGS do
  begin
    WriteLn(Format('Testing %s', [S]));
    I := 0;
    M := TRegex.Match(S, '(?:^\$(?=(?:[[:xdigit:]]{2}){1,8}$)|\G([[:xdigit:]]{2})(?=(?:[[:xdigit:]]{2}){0,7}$))');
    if M.Success then
    begin
      repeat
        WriteLn(Format('%d: %s', [I, M.Groups[0].Value]));
        Inc(I);
        M := M.NextMatch;
      until not M.Success;
    end else
      WriteLn(Format('No match for %s', [S]));
  end;
  ReadLn;
end.
Sebastian
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Regulärer Ausdruck für Hexzahlen

  Alt 30. Mär 2018, 17:08


Danke, genau das was ich brauch

Hast du da irgendwie so ein kleines Männchen das dir die Dinger so fix einflüstert ?
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
SProske

Registriert seit: 16. Feb 2015
Ort: Halle/S.
116 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#5

AW: Regulärer Ausdruck für Hexzahlen

  Alt 30. Mär 2018, 18:48


Danke, genau das was ich brauch

Hast du da irgendwie so ein kleines Männchen das dir die Dinger so fix einflüstert ?
Keine Ursache - und nein, nur eine gewisse Faszination für das Thema
Sebastian
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz