AGB  ·  Datenschutz  ·  Impressum  







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

Int zu Hex wandeln

Ein Thema von Matczek · begonnen am 27. Mai 2005 · letzter Beitrag vom 29. Mai 2005
Antwort Antwort
Seite 1 von 2  1 2      
Matczek

Registriert seit: 23. Aug 2004
Ort: Hamburg
34 Beiträge
 
Delphi 5 Professional
 
#1

Int zu Hex wandeln

  Alt 27. Mai 2005, 15:42
Hallo Leute,
ich habe da ein kleines Problem und ich stehe ein bischen auf'm Schlau.

Ich habe einen Integerwert (z.B. 1000) und benötige ihn in HEX also "0003E8". Das kann man ja mit IntToHex prima machen.

Das ist aber nicht ganz das was ich benötige. Ich benötige nämlich
str = Char($00)+Char($03)+Char($E8).

Gibt es ein einfache Möglichkeit das ganze zu bewerkstelligen?

Gruß Matthias

PS: Delphi 5 habe ich
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#2

Re: Int zu Hex wandeln

  Alt 27. Mai 2005, 15:51
du brauchst es dann gar nicht zu konvertieren, sondern einfach den binären aufbau eines Integers nutzen

also sowas:
Delphi-Quellcode:
function ToStr(Zahl: integer): string;
begin
  result := char((Zahl shr 16) and $FF) + char((Zahl shr 8) and $FF) + char(Zahl and $FF);
end;
Ich bin mir nicht sicher, obs das 'and $FF' überhaupt braucht, und ich gebe auch keine Garantie, dass das Funktioniert, aber es dürfte in die Richtung von dem gehn, was du brauchst
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Int zu Hex wandeln

  Alt 27. Mai 2005, 15:53
Oder man benutzt gleich Delphi-Referenz durchsuchenIntToHex
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);

var
  i: Integer;
begin
  Label1.Caption := '';
  for i := 1 to Length(Edit1.Text) do
  begin
    try
      Label1.Caption := Label1.Caption + IntToHex(Edit1.Text[i],2) + ' ';
    except
      Beep;
    end;
  end;
end;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
UweR

Registriert seit: 15. Mär 2004
Ort: Bad Marienberg
219 Beiträge
 
Delphi 7 Professional
 
#4

Re: Int zu Hex wandeln

  Alt 27. Mai 2005, 16:13
Hallo Matthias,

da muß ich auch mal Fragen wofür du das brauchst?

Du kannst dir das einfach über einen varianten Recordteil holen. Also so:

Delphi-Quellcode:
type
   TIntChar = record
      case integer of
         0 : ( WholeNumber : Int );
         1 : (SingleBytes : array[0..3] of char);
   end;

var
   IntChar : TIntChar;
   c : char;

begin
   IntChar.Wholenumber := 1000;
   c := IntChar.SingleBytes[0];
Allerdings muß du auf die little und big Endians aufpassen. Die 1000 steht quasi verkehrt rum im Speicher. Also als E8030000.
Gruß
UweR
  Mit Zitat antworten Zitat
Benutzerbild von Kroko1999
Kroko1999

Registriert seit: 21. Apr 2005
Ort: Spremberg
455 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Int zu Hex wandeln

  Alt 27. Mai 2005, 16:45
Da lief mir doch etwas über den Weg:
siehe hier
Da sprach der Stumme zum Blinden: "Du wirst sehen ..."
oder
Wer lesen kann, ist klar im Vorteil!
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#6

Re: Int zu Hex wandeln

  Alt 27. Mai 2005, 16:50
Ich schätze mal, es ist nich verboten, in anderen Foren die selbe Frage zu posten
Vielleicht bekommt er da ne andere, besser oder sonstwie vorzuziehende Lösung, die er uns hier dann vorstellen kann
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
Matczek

Registriert seit: 23. Aug 2004
Ort: Hamburg
34 Beiträge
 
Delphi 5 Professional
 
#7

Re: Int zu Hex wandeln

  Alt 27. Mai 2005, 16:57
wow das geht aber fix hier mit den antworten!

@UweR
Kurz gesagt: Ich habe hier ein Gerät welches in HEX kommuniziert und ich muss es mit einer DeviceID ansprechen. Könntest du den Source noch ein bischen erklären? Ich verstehe das mit dem "case integer of" nicht ganz, wieso funktioniert das?

Wie kommt man auf sowas? Kennt ihr zufällig ein gutes Tutorial welches auch solche Kniffe beinhaltet?

@Chimaira und Kroko1999
also vorstellen brauch ich das je jetzt nicht mehr ihr habt ja jetzt den Link. Danke dir Kroko1999.

mit Dank und Gruß
matthias
  Mit Zitat antworten Zitat
Waldteufel
(Gast)

n/a Beiträge
 
#8

Re: Int zu Hex wandeln

  Alt 27. Mai 2005, 17:19
Hi.

@Luckie: Wenn er den Hex-Wert $60708090 hat, will er den String '<FPZ' (#$60#$70#$80#$90)... IntToHex($60708090) gibt aber '60708090' zurück...

So gehts auch (ein ähnlich schmutziger Trick wie bei UweR... ):
Delphi-Quellcode:
function ReverseInt(i : integer) : integer; // ungetestet
begin
  result := ((i and $000000FF) shl 24) or ((i and $0000FF00) shl 8) or ((i and $00FF0000) shr 8) or ((i and $FF000000) shr 24);
end;

function DasWasMatczekWill(i : integer) : ShortString;
var
  p : Pointer;
begin
  result[0] := #4;
  p := @result[1];
  p^ := ReverseInt(i);
end;
@Matczek: Das case of integer heißt, dass der Record - abhängig von einem Feld - seinen Aufbau wechselt, seinen Inhalt jedoch nicht.
Aber warum sendest du nicht direkt den Integer? Der String enthält ja noch Zusatzinfos (Länge, Referenzzähler oder #0 am Ende)

//edit: Ganz klein und ganz hell...
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#9

Re: Int zu Hex wandeln

  Alt 27. Mai 2005, 17:35
Und das hier geht auch noch:

Delphi-Quellcode:
type
  TCharArray = array of char;

function Pack(hex: string): TCharArray;
begin
  SetLength(Result, Length(hex) shr 1);
  HexToBin(@hex[1], @Result[0], Length(Result));
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
UweR

Registriert seit: 15. Mär 2004
Ort: Bad Marienberg
219 Beiträge
 
Delphi 7 Professional
 
#10

Re: Int zu Hex wandeln

  Alt 27. Mai 2005, 19:28
@Waldteufel:
Zitat:
So gehts auch (ein ähnlich schmutziger Trick wie bei UweR... ):
Was heißt hier schmutziger Trick. Wenn's so dirty wäre wäre das Feature wohl nicht implementiert . Außerdem erzähle das bloß keinem C-Programmierer. Da nennt sich sowas union und gehört zum Handwerkszeug.

Das was du da veranstaltest fällt schon eher in die Kategorie "Dirty Trick", vor allem wenn man das Short bei ShortString vergißt und sich über die Ergebnisse wundert. Dann schon lieber sauber zwei Zeiger aufgesetzt! Das kapiert auch jemand dem der Aufbau eines ShortString nicht unbedingt vertraut ist.

@Matczek
Zitat:
Ich habe hier ein Gerät welches in HEX kommuniziert und ich muss es mit einer DeviceID ansprechen.
Sowas hatte ich mir schon gedacht. Die Antwort wie's funktioniert haben dir die Kollegen ja schon gegeben, es ist einfach der selbe Speicherwert und er wird nur anders interpretiert und es gibt auch viele Wege die nach Rom führen wie wohl schon bemerkt hast. Such dir den aus der dir am besten gefällt.

Tja wo hat man sowas her? Bei mir muß ich sagen das sich solche Schweinereien noch aus meiner C-Zeit kenne und einfach in Delphi nach dem Gegenstück gesucht habe. Tut kenn ich keines, das eignet man sich halt im Laufe der Jahre so an wie man's brauch!
Gruß
UweR
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 19:57 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