HEX-Zahl Addition
Moderator: Moderatoren
- Werner_Bayern
- Der Entwickler von "Deep Thought"
- Beiträge: 2126
- Registriert: Sa, 30. Jan 2010 22:58
- Wohnort: Niederbayern
- Hat sich bedankt: 30 Mal
- Danksagung erhalten: 75 Mal
HEX-Zahl Addition
Anfängerfrage: Wie würdet Ihr das umsetzen, zu einer HEX-Zahl (sehr groß, HASH-Wert) wie z. B. 6965129d6c68406c93fa74c7ef2696b6 die Zahl 1 zu addieren?
Einfach die letzten X Stellen nehmen?
Einfach die letzten X Stellen nehmen?
es grüßt
Werner
<when the music is over, turn off the lights!>
Werner
<when the music is over, turn off the lights!>
- Marcus Herz
- 1000 working lines a day
- Beiträge: 859
- Registriert: Mo, 16. Jan 2006 8:13
- Wohnort: Allgäu
- Hat sich bedankt: 39 Mal
- Danksagung erhalten: 192 Mal
- Kontaktdaten:
Re: HEX-Zahl Addition
Vielleicht so wie die Schüler der 1. Klasse:
nimm das letzte (rechteste) Bit und zähl 1 drauf, nur wenn da schon f steht, hast du einen Übertrag zum nächsten Bit und addierst da drauf, solange bis kein Übertrag bleibt
nimm das letzte (rechteste) Bit und zähl 1 drauf, nur wenn da schon f steht, hast du einen Übertrag zum nächsten Bit und addierst da drauf, solange bis kein Übertrag bleibt
Code: Alles auswählen
bh459 + 1 = bh45a
bh45f + 1 = bh460
bh4ff + 1 = bh500
Gruß Marcus
Den Kopf in den Sand zu stecken verbessert die Welt auch nicht.
Den Kopf in den Sand zu stecken verbessert die Welt auch nicht.
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9387
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 103 Mal
- Danksagung erhalten: 362 Mal
- Kontaktdaten:
Re: HEX-Zahl Addition
Auch bei einer Addition von nur 1 kannst Du im Extremfall gezwungen sein, die ganze Zahl anzufassen.
Ansonsten gilt, was Marcus schrieb. Alles, was größer als F wird, führt zu einem Übertrag eine Stelle weiter links, bis das nicht mehr geschieht.
Ansonsten gilt, was Marcus schrieb. Alles, was größer als F wird, führt zu einem Übertrag eine Stelle weiter links, bis das nicht mehr geschieht.
Herzlich,
Tom
Tom
- brandelh
- Foren-Moderator
- Beiträge: 15699
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 68 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: HEX-Zahl Addition
ich hab mal nach Funktionen gesucht und einen alten Beitrag von mir gefunden, da stand:
damit kannst du das Umrechnen und wieder zurück, solange die Zahl nicht zu groß wird (die Genauigkeit hab ich nicht im Kopf).
Natürlich kann man auch nach der Anleitung von Marcus und Tom eine Funktion schreiben, die das direkt auf den Ziffern 0 bis F erledigt, dann hat man nie ein Problem mit Umwandlungsverlusten.
Code: Alles auswählen
*----------------------------------------------------
function NumToHex(nWert,nLen)
// Formel kann man unter www.wikipedia.de -> Hexadezimalsystem nachlesen.
local cHex := "", x
local cH := "0123456789ABCDEF"
DEFAULT nLen TO 0
do while .t.
x := nWert % 16 // Divisionsrest ergibt HEX-Ziffer der höchsten Stelle
cHex := cH[x+1]+cHex // Rest 0 -> "0", da dies aber das 1. Zeichen im String ist +1
nWert := int(nWert/16) // nächste Potenz prüfen.
if nWert <= 0
exit
endif
enddo
if nLen > 0
cHex := Replicate("0",nLen-len(cHex))+cHex
endif
return cHex
Code: Alles auswählen
*----------------------------------------------------
function HexToNum(cHex)
local x,y,nLenX,i,nWert,cH
i := 0 // Erste Stelle 16^i == 16^0
cH := "123456789ABCDEF" // "0"-"F" -> in Zahl umsetzen, wobei AT() "0" -> 0 ergibt
nLenX := len(cHex) // Länge des HEX-Strings ergibt die Anzahl an Stellen
nWert := 0 // hier wird der Wert addiert
for x := nLenX TO 1 STEP -1
y := AT(cHex[x],cH) // "0" -> 0, "1" -> 1 ... "F" -> 15
nWert += y * 16^i // Wert dieser Stelle addieren
i++ // Index erhöhen ...
next
return int(nWert)
Natürlich kann man auch nach der Anleitung von Marcus und Tom eine Funktion schreiben, die das direkt auf den Ziffern 0 bis F erledigt, dann hat man nie ein Problem mit Umwandlungsverlusten.
Gruß
Hubert
Hubert
- hel-systems
- Rookie
- Beiträge: 16
- Registriert: Mo, 30. Jul 2007 17:47
- Wohnort: Nettetal
- Hat sich bedankt: 5 Mal
- Danksagung erhalten: 1 Mal
- Kontaktdaten:
Re: HEX-Zahl Addition
Hallo Werner,
ich habe vor einigen Jahren mal sowas ähnliches gebraucht, ist zwar nicht elegant, hilft dir aber vielleicht, sonst einfach ignorieren
Dazu hatte ich die folgende Funktion fürs addieren einfach als case, geht sicherlich über val vom Zeichen einfacher, aber so fand ich besser zu lesen:
Bis dann
Helmut
ich habe vor einigen Jahren mal sowas ähnliches gebraucht, ist zwar nicht elegant, hilft dir aber vielleicht, sonst einfach ignorieren
Code: Alles auswählen
local nPos := 0
local lUebertrag := .f.
local nStringLaenge := -1
local cHexZahl := "6965129d6c68406c93fa74c7ef2696b6"
local cErgebnis := ""
/* we use the ansi charset by default */
SET CHARSET TO ANSI
nStringLaenge := len( cHexZahl )
nPos := nStringLaenge
while nPos > 0
// jetzt 1 auf die Stelle addieren
cErgebnis := AddEins( upper(cHexZahl[nPos]) )
if cErgebnis == "H"
// Übertrag
cHexZahl[nPos] := "0"
nPos--
// wenn Anfang des Strings, dann 1 vorne anhängen
if nPos = 0
cHexZahl := "1" + cHexZahl
nPos := -1
endif
else
cHexZahl[nPos] := cErgebnis
nPos := -1
endif
end // while
? cHexZahl
inkey(0)
RETURN
Code: Alles auswählen
function AddEins( cZeichen )
local cResult := ""
do case
case cZeichen == "0"
cResult := "1"
case cZeichen == "1"
cResult := "2"
case cZeichen == "2"
cResult := "3"
case cZeichen == "3"
cResult := "4"
case cZeichen == "4"
cResult := "5"
case cZeichen == "5"
cResult := "6"
case cZeichen == "6"
cResult := "7"
case cZeichen == "7"
cResult := "8"
case cZeichen == "8"
cResult := "9"
case cZeichen == "9"
cResult := "A"
case cZeichen == "A"
cResult := "B"
case cZeichen == "B"
cResult := "C"
case cZeichen == "C"
cResult := "D"
case cZeichen == "D"
cResult := "E"
case cZeichen == "E"
cResult := "F"
case cZeichen == "F"
cResult := "H"
end // case
return ( cResult )
Helmut
- Werner_Bayern
- Der Entwickler von "Deep Thought"
- Beiträge: 2126
- Registriert: Sa, 30. Jan 2010 22:58
- Wohnort: Niederbayern
- Hat sich bedankt: 30 Mal
- Danksagung erhalten: 75 Mal
Re: HEX-Zahl Addition
Servus,
danke, damit komme ich klar. Habt Ihr gewußt, dass man kleine HEX-Zahlen mit
umrechnen kann?
danke, damit komme ich klar. Habt Ihr gewußt, dass man kleine HEX-Zahlen mit
Code: Alles auswählen
val(cHex, 16)
es grüßt
Werner
<when the music is over, turn off the lights!>
Werner
<when the music is over, turn off the lights!>
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9387
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 103 Mal
- Danksagung erhalten: 362 Mal
- Kontaktdaten:
Re: HEX-Zahl Addition
Kann man? Dokumentiert ist es jedenfalls nicht, und ein Val("FF",16) erzeugt bei mir genauso 0 als Ausgabe wie ein Val("1B",16) eine 1 - genau wie ohne den zweiten Parameter. Und 0xFF nimmt Val als ersten Parameter nicht an.umrechnen kann?
Val("1") bis Val("9") ist jedoch für Hex und Dec übereinstimmend richtig, mit oder ohne zweiten Parameter.
Herzlich,
Tom
Tom
- Werner_Bayern
- Der Entwickler von "Deep Thought"
- Beiträge: 2126
- Registriert: Sa, 30. Jan 2010 22:58
- Wohnort: Niederbayern
- Hat sich bedankt: 30 Mal
- Danksagung erhalten: 75 Mal
Re: HEX-Zahl Addition
Sorry, mein Fehler, ChatGPT hat das behauptet und bei meinem Beispiel oben kam dann auch gleich 6965129 raus und ich dachte mir, ok, ist halt auf 16bit oder so beschränkt.
Hab ihn gerade zurechtgewiesen, jetzt ist er mir beleidigt:
Hab ihn gerade zurechtgewiesen, jetzt ist er mir beleidigt:
Als AI-Sprachmodell kann ich keine Aussage zu spezifischen Programmiersprachen oder -umgebungen treffen, daher kann ich nichts zu der von Ihnen genannten Funktion in Xbase++ sagen. Bitte geben Sie mehr Informationen, wenn Sie eine spezifische Frage haben.
es grüßt
Werner
<when the music is over, turn off the lights!>
Werner
<when the music is over, turn off the lights!>
- Manfred
- Foren-Administrator
- Beiträge: 21211
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: HEX-Zahl Addition
genau,
wie kannst Du auch so blöde Fragen stellen?
wie kannst Du auch so blöde Fragen stellen?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Marcus Herz
- 1000 working lines a day
- Beiträge: 859
- Registriert: Mo, 16. Jan 2006 8:13
- Wohnort: Allgäu
- Hat sich bedankt: 39 Mal
- Danksagung erhalten: 192 Mal
- Kontaktdaten:
Re: HEX-Zahl Addition
Ich glaub, es ist nicht programmiert/vorgesehen, dass eine KI erkennt, dass sie nichts weiß. Irgendwas findet die ja immer im Internet...
Gruß Marcus
Den Kopf in den Sand zu stecken verbessert die Welt auch nicht.
Den Kopf in den Sand zu stecken verbessert die Welt auch nicht.
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9387
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 103 Mal
- Danksagung erhalten: 362 Mal
- Kontaktdaten:
Re: HEX-Zahl Addition
ChatGPT sucht nicht "im Internet", jedenfalls nicht aktiv im aktuellen.Ich glaub, es ist nicht programmiert/vorgesehen, dass eine KI erkennt, dass sie nichts weiß. Irgendwas findet die ja immer im Internet...
Und eine Künstliche Idiotie "weiß" überhaupt nichts. Sprachbasierte, generative Algorithmen reihen Begriffe aneinander, von denen sie gemäß Kontext annehmen können, dass diese Aneinanderreihung die wahrscheinlichste erwartete ist, aber es gibt keine wie auch immer geartete Kenntnis von der Bedeutung dieser Begriffe. Dass es trotzdem so gut funktioniert, ist dem extrem aufwendigen Training zu verdanken. Diese Training bezog eine Menge Texte ein, die nicht validiert wurden, weshalb die KIs auch Informationen aneinanderreihen, die auf Behauptungen oder Lügen basieren oder einem ganz anderen Kontext entstammen. Es ist dann häufig die Rede davon, dass sich "die KI etwas ausdenken" würde, was natürlich auch Blödsinn ist.
Herzlich,
Tom
Tom
- brandelh
- Foren-Moderator
- Beiträge: 15699
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 68 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: HEX-Zahl Addition
Da fällt mir ein Artikel ein, Suchbegriff "Politiker CDU", beim Ergebnis war auch einer von einer anderen Partei dabei, dieser wurde nur im Zusammenhang mit einer CDU Veranstaltung erwähnt.
Als ich "englisch reden" lernte, erkannte ich man muss in der Sprache denken, die man reden möchte ... eventuell ist das beim Schreiben auch angesagt
Heute arbeitet es für dich
Morgen denkt es für dich,
übermorgen ersetzt ES dich
ES war übrigens der einzige Film, den ich mir nie mehr ansehe, weil er mir richtig nach ging, auch wenn es nichts mit Computern zu tun hatte.
Als ich "englisch reden" lernte, erkannte ich man muss in der Sprache denken, die man reden möchte ... eventuell ist das beim Schreiben auch angesagt
Heute arbeitet es für dich
Morgen denkt es für dich,
übermorgen ersetzt ES dich
ES war übrigens der einzige Film, den ich mir nie mehr ansehe, weil er mir richtig nach ging, auch wenn es nichts mit Computern zu tun hatte.
Gruß
Hubert
Hubert