AGB  ·  Datenschutz  ·  Impressum  







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

Typenumwandlungen

Ein Thema von endeffects · begonnen am 24. Jun 2008 · letzter Beitrag vom 24. Jun 2008
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#11

Re: Typenumwandlungen

  Alt 24. Jun 2008, 17:10
Aus der Deplhi-Hilfe zu StrToInt:
Zitat:
...
...
Beschreibung
StrToInt konvertiert den in S angegebenen String in einen Integer-Wert. S muss die Entsprechung eines ganzzahligen Wertes (dezimal oder hexadezimal) sein. Enhält er keinen gültigen Wert, wird eine EConvertError-Exception ausgelöst.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
endeffects

Registriert seit: 27. Jun 2004
450 Beiträge
 
#12

Re: Typenumwandlungen

  Alt 24. Jun 2008, 17:13
ja entschuldigung, vielleicht drück ich mich auch etwas schwerfällig aus

also ich möcht eine antwort von einem udp server auswerten und reagieren,
in der dokumentation heißt es wie folgt:

Zitat:
The master servers each respond by sending FF FF FF FF 73 0A followed by a (relatively) unique 4-byte "challenge" number.
aus dem string den mir der server sendet extrahiere ich also die letzten 4 zeichen.
weiter gehts dann mit:

Zitat:
The challenge number, 1339895702 (0x4FDD2F96) in this example, is the reverse of the challenge number originally sent by the server (96 2F DD 4F).
das heißt also das ich den string den ich erhalten habe umdrehen muss:

CallengeCode:= CallengeCode[4] + CallengeCode[3] + CallengeCode[2] + CallengeCode[1]; soweit eigentlich ganz simpel, nun habe ich aber das problem aus diesem 4 zeichen
langen string diese komische challenge nummer zu formen
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
 
#13

Re: Typenumwandlungen

  Alt 24. Jun 2008, 17:22
Ouch.. du hast eigentlich keinen String, sondern ein Array of Byte, das ist Dein eigentliches Problem (und dürfte Dir zudem massiv Probleme bereiten, sobald Delphi 2008 mit Unicode daherkommt).

Und wenn Du die letzten vier Bytes umgedreht hast, dann hast Du schon genau die Werte, die Du zurücksenden musst. Da brauchst Du nichts mehr konvertieren.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
endeffects

Registriert seit: 27. Jun 2004
450 Beiträge
 
#14

Re: Typenumwandlungen

  Alt 24. Jun 2008, 17:24
der server möchte aber diese challange nummer als string haben,
es reicht leider nicht einfach die bytes umzudrehen und zurückzusenden
  Mit Zitat antworten Zitat
Cyf

Registriert seit: 30. Mai 2008
407 Beiträge
 
Lazarus
 
#15

Re: Typenumwandlungen

  Alt 24. Jun 2008, 17:25
Dein String muss 9 (8 + '$' bzw, bei '0x' 10) Zeichen lang sein, da es in deinem Beispiel um eine 4-Byte Zahl geht und ein Hexadezimalzeichen 4 Bit (0,5 Byte) repräsentiert, in deinem Beispiel sind es auch 8 Hexadezimalzeichen.

[Edit] Wenn ich das richtig verstehe:

Delphi-Quellcode:
function foobar(s: string): Integer;
begin
  Result:= StrToInt('$' + s[8] + s[9] + s[6] + s[7] + s[4] + s[5] + s[2] + s[3]);
end;
Das ganze ausgehend davon das s[0], das erste Zeichen ist bin bei string grad nicht mehr sicher, ob das nicht doch bei s[1] anfängt, dann einfach überall beim Index eins drauf. (ach es leben wunderschöne #0-terminierte char-arrays)
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
 
#16

Re: Typenumwandlungen

  Alt 24. Jun 2008, 17:29
In dem Fall ist wohl IntToHex(byte1, 2) + IntToHex(byte2, 2) + IntToHex(byte3, 2) + IntToHex(byte4, 2) das richtige.
Oder, Du packst die Werte zuvor in einen einzigen Wert - also gleich beim auseinanderpflücken, IntToHex(byte1 + byte2*256 + byte3*65536 + byte4*16777216, 8 )
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
endeffects

Registriert seit: 27. Jun 2004
450 Beiträge
 
#17

Re: Typenumwandlungen

  Alt 24. Jun 2008, 17:36
nun hab ich leider irgendwie den anschluss verloren,
ich hatte ja gehofft das es recht einfach möglich ist
diesen 4 byte string so umzuwandeln das ich über StrToInt($...)
irgendwie an diesen wert komme
  Mit Zitat antworten Zitat
endeffects

Registriert seit: 27. Jun 2004
450 Beiträge
 
#18

Re: Typenumwandlungen

  Alt 24. Jun 2008, 18:02
so nun hab ich es doch tatsächlich noch hinbekommen:

Delphi-Quellcode:
function StringtoHex(Data: string): string;
var
  i, i2: Integer;
  s: string;
begin
  i2 := 1;
  for i := 1 to Length(Data) do
  begin
    Inc(i2);
    if i2 = 2 then
    begin
      i2 := 1;
    end;
    s := s + IntToHex(Ord(Data[i]), 2);
  end;
  Result := '$' + s;
end;

CallengeCode:= CallengeCode[4] + CallengeCode[3] + CallengeCode[2] + CallengeCode[1];
CallengeCode:= StringtoHex(CallengeCode);
CallengeCode:= IntToStr(LongInt(StrToInt(CallengeCode)));
vielen vielen lieben dank für eure hilfe und geduld =)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 16:38 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