AGB  ·  Datenschutz  ·  Impressum  







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

was liefert HexToBin?

Ein Thema von messie · begonnen am 22. Jul 2006 · letzter Beitrag vom 22. Jul 2006
Antwort Antwort
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#1

was liefert HexToBin?

  Alt 22. Jul 2006, 13:00
Hallo,

ich wollte einen Hex-String in ein Format wandeln, was ich bitweise auswerten kann (Statuswort). Bei HexToBin bekomme ich Ergebnisse, die mir nicht verständlich sind:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  s : string;
  buffer: array[0..15] of Char;
begin
  s := 'ffff';
  HexToBin(PChar(s),buffer,SizeOf(Buffer));
end;
In Buffer stehen dann Werte die ich nicht verstehe. Die anderen Threads zum Thema haben keine Erklärung, die mir weiterhilft.

Wer kann erkären was in buffer steht?

Grüße, Messie
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#2

Re: was liefert HexToBin?

  Alt 22. Jul 2006, 13:03
Was steht denn im Buffer? Kanns sein, das die ersten zwei Chars #FF sind, und der Rest mehr oder weniger zufällig? Dann ists ganz simpel: du hast nur zwei Zeichen, wandelst aber 16 um. Der Computer nimmt sich also einfach die 14, die nach dem string sind.. Da hattest du bisher Glück, keine AVs zu haben. Eben immer nur so viele Zeichen umwandeln, wie da sind
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#3

Re: was liefert HexToBin?

  Alt 22. Jul 2006, 13:23
Zitat von Dax:
Was steht denn im Buffer? Kanns sein, das die ersten zwei Chars #FF sind, und der Rest mehr oder weniger zufällig? Dann ists ganz simpel: du hast nur zwei Zeichen, wandelst aber 16 um. Der Computer nimmt sich also einfach die 14, die nach dem string sind.. Da hattest du bisher Glück, keine AVs zu haben. Eben immer nur so viele Zeichen umwandeln, wie da sind
Ja, Du hast recht, ich habe mein Word in den ersten beiden Chars. Damit kann ich aber nicht gut weiterarbeiten. Gibt es keine Funktion die aus Hex einen Integer macht? Oder gibt es eine Funktion mit der ich das Ergebnis direkt bitweise verarbeiten kann?
Übrigens ist die OH für diese Funktion eher verwirrend als aufklärend.

Grüße, Messie
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#4

Re: was liefert HexToBin?

  Alt 22. Jul 2006, 13:24
Wenn deine Hexdaten höchstens 32bittige Ints repräsentieren, kannst du ein $ davorhängen und dann das ganze per IntToStr umwandeln.
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#5

Re: was liefert HexToBin?

  Alt 22. Jul 2006, 13:25
Hallo messie,

Die Funktion HexToBin füllt einen Puffer mit den Zeichen, deren Hex-Darstellung als String (mit Kleinbuchstaben!) im ersten Parameter übergeben werden:

Code:
'41424358595a' -> 'ABCXYZ'
Wie Dax schon angedeutet hat, wird die Anzahl der umgewandelten Zeichen durch die Länge des übergebenen Puffers und nicht durch den ersten Parameter bestimmt. Bei deinem Beispiel wären dies 16 Zeichen, obwohl du nur Hexcode für 2 Zeichen (2 x #$FF) übergibst.

Wenn du einen als String vorliegenden Hexwert bitweise auswerten möchtest, könntest du ihn zunächst in einer Integer-Variablen ablegen. Aus dieser lassen sich die einzelnen Bits leicht gewinnen:

Delphi-Quellcode:
var
  s : string;
  v : Integer;
  bit0 : Boolean;
  bit8 : Boolean;
  bit14 : Boolean;
begin
  s := 'ffff';
  v := StrToIntDef('$' + s, 0);
  bit0 := Odd(v {shr 0});
  bit8 := Odd(v shr 8);
  bit14 := Odd(v shr 14);
end;
Gruß Hawkeye
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#6

Re: was liefert HexToBin?

  Alt 22. Jul 2006, 14:50
Zitat von Hawkeye219:
Delphi-Quellcode:
s := 'ffff';
v := StrToIntDef('$' + s, 0);
Ja, genau das war es!

Grüße, Messie
  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 18:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz