AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Big Endian Little Endian tauschen von smallint Wert und von normalem integer Wert
Thema durchsuchen
Ansicht
Themen-Optionen

Big Endian Little Endian tauschen von smallint Wert und von normalem integer Wert

Ein Thema von Delphiuser1987 · begonnen am 21. Jun 2010 · letzter Beitrag vom 21. Jun 2010
Antwort Antwort
Delphiuser1987

Registriert seit: 29. Apr 2010
31 Beiträge
 
#1

Big Endian Little Endian tauschen von smallint Wert und von normalem integer Wert

  Alt 21. Jun 2010, 10:28
Delphi-Version: 2010
Hi, brauch mal wieder dringend Hilfe.
Ich muss von einem smallint Wert und von einem normalen integer Wert Big Endian und little Edian tauschen.
Bitte um Hilfe von euch, danke
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Big Endian Little Endian tauschen von smallint Wert und von normalem integer Wert

  Alt 21. Jun 2010, 10:41
Delphi-Quellcode:
t1 := wert DIV 65536;
t2 := wert MOD 65536;
nwert := t2 * 65536 + t1;
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#3

AW: Big Endian Little Endian tauschen von smallint Wert und von normalem integer Wert

  Alt 21. Jun 2010, 10:44
Delphi-Quellcode:
uses
  Sysutils;

function SwapEndianSmallInt(Value: SmallInt): SmallInt;
begin
  result := System.Swap(Value);
end;

function SwapEndianInteger(Value: Integer): Integer;
begin
  LongRec(result).Lo := System.Swap(LongRec(Value).Hi);
  LongRec(result).Hi := System.Swap(LongRec(Value).Lo);
end;
Uwe Raabe
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#4

AW: Big Endian Little Endian tauschen von smallint Wert und von normalem integer Wert

  Alt 21. Jun 2010, 10:44
http://www.delphipraxis.net/125740-e...rtauschen.html
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#5

AW: Big Endian Little Endian tauschen von smallint Wert und von normalem integer Wert

  Alt 21. Jun 2010, 11:06
Delphi-Quellcode:
t1 := wert DIV 65536;
t2 := wert MOD 65536;
nwert := t2 * 65536 + t1;
Bei einem vorzeichenbehafteten Typen solltest du aufpassen und besser keine mathematischen Operatioen verwenden oder diesen erstmal in einen Vorzeichenlosen casten.
$2B or not $2B
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#6

AW: Big Endian Little Endian tauschen von smallint Wert und von normalem integer Wert

  Alt 21. Jun 2010, 11:20
Delphi-Quellcode:
t1 := wert DIV 65536;
t2 := wert MOD 65536;
nwert := t2 * 65536 + t1;
Bei einem vorzeichenbehafteten Typen solltest du aufpassen und besser keine mathematischen Operatioen verwenden oder diesen erstmal in einen Vorzeichenlosen casten.
Und das ist noch das kleinere Problem! Hier werden nur die beiden 16-Bit-Teile getauscht, aber das ist keine Big <-> Little-Endian-Umwandlung, liefert zB für $23456789 den angeblichen Wert $67892345 statt $89674523. Mit purem Pascal hier eine korrekte Umwandlung:
Delphi-Quellcode:
function RB(A: longint): longint;
  {-Umwandlung Big - Little Endian}
begin
  RB := ((A and $FF) shl 24) or ((A and $FF00) shl 8) or ((A and $FF0000) shr 8) or ((A and longint($FF000000)) shr 24);
end;
  Mit Zitat antworten Zitat
Delphiuser1987

Registriert seit: 29. Apr 2010
31 Beiträge
 
#7

AW: Big Endian Little Endian tauschen von smallint Wert und von normalem integer Wert

  Alt 21. Jun 2010, 12:33
danke Leute hat wunderbar funktioniert
wie immer halt
  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 19:32 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