AGB  ·  Datenschutz  ·  Impressum  







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

Welcher Hexwert ist -1

Ein Thema von v2afrank · begonnen am 20. Mär 2020 · letzter Beitrag vom 21. Mär 2020
Antwort Antwort
v2afrank

Registriert seit: 9. Mai 2005
Ort: Bocholt
575 Beiträge
 
Delphi XE2 Professional
 
#1

Welcher Hexwert ist -1

  Alt 20. Mär 2020, 06:00
Hallo zusammen, in einem meiner älteren Projekt (mit Delphi 2006) werden Daten über eine serielle Schnittstelle empfangen und ausgegeben.
Der User kann dann entscheiden in welcher Darstellung er den Wert sehen möchte.
jetzt hat ein Kollege folgendes bemerkt. Wir empfangen über die Schnittstelle im den Wert $FFFF also 16 gesetzte Bits.
Der hat sich den Wert jetzt als Hexwert ausgeben lassen und -1 erwartet. Heraus kamen jedoch $FFFFFFFF
Auch ein simples
Caption:= IntToHex(-1,2);
liefert $FFFFFFFF.

C# zeigt das gleiche an
Int16 i = -1;
Console.WriteLine(i.ToString("x4"));
Ergibt FFFF

Python und Javascript zeigen jedoch -1 an.

Jetzt habe ich gesehen das in neueren Delphi Versionen die Inttohex Funktion überladen ist.
function IntToHex(Value: Int16): string;
function IntToHex(Value: UInt16): string;

Kann mal einer mit einer neueren Version testen was Delphi hier ausgibt ? Ich habe gestern länger mit dem Kollegen diskutiert und wir sind zu dem Schluß gekommen das wir es zu technisch sehen. $0-$1 ergibt unserer Meinung nach auch -$1 auch wenn es intern vielleicht als $FFFF gespeichert wird
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.811 Beiträge
 
Delphi 12 Athens
 
#2

AW: Welcher Hexwert ist -1

  Alt 20. Mär 2020, 06:37
Es kommt halt darauf an, wie man die Bitfolge interpretieren möchte.
Aber aus $FFFF macht IntToHex ganz sicher nicht $FFFFFFFF, sondern gibt eine Fehlermeldung aus.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann

Geändert von Sherlock (20. Mär 2020 um 06:39 Uhr)
  Mit Zitat antworten Zitat
v2afrank

Registriert seit: 9. Mai 2005
Ort: Bocholt
575 Beiträge
 
Delphi XE2 Professional
 
#3

AW: Welcher Hexwert ist -1

  Alt 20. Mär 2020, 06:55
Okay, man muss den Compiler zwingen ein SmallInt (Int16) zu nehmen siehe Anhang.
Darum die frage was machen die neueren Delphis

Nachtrag:
Zu dem Bild noch, wenn ich einem Smallint die $FFFF zuweise kommt ein Compilerfehler (Konstantenausdruck verletzt die untere Grenz) ist ja auch richtig. Im Prinzip ist mir Datentyp auch egal. Der User erwartet hier nur eben eine -1 oder eben auch eine -A (für Dezimal -10) zu sehen und nicht $FFFF oder (im -10 Fall) $FFF6
Angehängte Grafiken
Dateityp: png Unbenannt.png (3,6 KB, 24x aufgerufen)

Geändert von v2afrank (20. Mär 2020 um 06:59 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Welcher Hexwert ist -1

  Alt 20. Mär 2020, 07:44
Wenn du i als SmallInt deklarierst und die Zuweisung castest, sollte es gehen:
Delphi-Quellcode:
var
  i: SmallInt;
begin
  i := SmallInt($FFFF);
  Caption := i.ToString;
...
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.115 Beiträge
 
Delphi 2009 Professional
 
#5

AW: Welcher Hexwert ist -1

  Alt 20. Mär 2020, 07:46
$FFFF ist das Literal für 65535. SmallInt($FFFF) ist -1, oder einfacher not 0 .
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
v2afrank

Registriert seit: 9. Mai 2005
Ort: Bocholt
575 Beiträge
 
Delphi XE2 Professional
 
#6

AW: Welcher Hexwert ist -1

  Alt 20. Mär 2020, 10:44
Mist, hatte vergessen meine Antwort abzuschicken.
Das problem ist die Intthex Funktion bei meinem Delphi 2006. Wie in meinem Anhang zu sehen wird aus einer Zuweisung mit $FFFF nach dem IntToHex ein $FFFFFFFF
Dezimal ist es eine -1. Die Frage ist halt wirklich was zeigen die neueren Delphis an.
Smallint -1 wird halt intern als $FFFF abgespeichert. Ich glaube aber immer mehr erwarten als Hexzahl würde ich ein -$1
Angehängte Grafiken
Dateityp: png Unbenannt2.png (9,1 KB, 13x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Welcher Hexwert ist -1

  Alt 20. Mär 2020, 10:52
oder einfacher not 0 .
Für diesen einen Wert von Millliarden anderen stimmt zufällig diese Aussage,
aber NOT hat bei einem Zweierkomplement absolut nichts zu suchen.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#8

AW: Welcher Hexwert ist -1

  Alt 20. Mär 2020, 18:20
Was macht InttoHex? es produziert einen String, der die hexadezimale Repräsentation eines Integers ist.
Da wird nie -1,-255 oder -9 heraus kommen.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  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:50 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