HEX-Zahl Addition

Konzeptionelles, Technisches, Termine, Fragen zum Hersteller usw.

Moderator: Moderatoren

Antworten
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
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

Beitrag von Werner_Bayern »

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?
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 852
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: HEX-Zahl Addition

Beitrag von Marcus Herz »

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

Code: Alles auswählen

bh459 + 1 = bh45a
bh45f + 1 = bh460
bh4ff + 1 = bh500
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: HEX-Zahl Addition

Beitrag von Tom »

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.
Herzlich,
Tom
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: HEX-Zahl Addition

Beitrag von brandelh »

ich hab mal nach Funktionen gesucht und einen alten Beitrag von mir gefunden, da stand:

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)
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.
Gruß
Hubert
Benutzeravatar
hel-systems
Rookie
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

Beitrag von hel-systems »

Hallo Werner,
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
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:

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 )
Bis dann
Helmut
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
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

Beitrag von Werner_Bayern »

Servus,

danke, damit komme ich klar. Habt Ihr gewußt, dass man kleine HEX-Zahlen mit

Code: Alles auswählen

val(cHex, 16)
umrechnen kann?
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: HEX-Zahl Addition

Beitrag von Tom »

umrechnen kann?
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.

Val("1") bis Val("9") ist jedoch für Hex und Dec übereinstimmend richtig, mit oder ohne zweiten Parameter. 8)
Herzlich,
Tom
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
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

Beitrag von Werner_Bayern »

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:
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!>
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21200
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: HEX-Zahl Addition

Beitrag von Manfred »

genau,
wie kannst Du auch so blöde Fragen stellen?
:badgrin:
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!!
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 852
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: HEX-Zahl Addition

Beitrag von Marcus Herz »

Ich glaub, es ist nicht programmiert/vorgesehen, dass eine KI erkennt, dass sie nichts weiß. Irgendwas findet die ja immer im Internet...
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: HEX-Zahl Addition

Beitrag von Tom »

Ich glaub, es ist nicht programmiert/vorgesehen, dass eine KI erkennt, dass sie nichts weiß. Irgendwas findet die ja immer im Internet...
ChatGPT sucht nicht "im Internet", jedenfalls nicht aktiv im aktuellen.

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
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: HEX-Zahl Addition

Beitrag von brandelh »

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 :badgrin:

Heute arbeitet es für dich
Morgen denkt es für dich,
übermorgen ersetzt ES dich 8)

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
Antworten