0

Funktion zur Umrechnung von Dezimal nach Hexadezimal?

Huhu,

 

wurde im Handbuch nicht fündig - gibt's eine Funktion, mittels der ich dezimale Zahlen nach hexadezimal umrechnen kann?

 

lg, Torsten

11 Antworten

null
    • bernd
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Du brauchst dazu ein Zahlenfeld und eine Berechnung, in der Berechnung folgenden Code Eintragen

    let AUS := ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"];
    var DEZ := Zahl;
    var BCD := "";
    var POS := 0;
    var WER := 1;
    while DEZ > 0 or WER > 0 do 
        WER := floor(DEZ / 16);
        POS := DEZ - WER * 16;
        BCD := item(AUS, POS) + BCD;
        DEZ := WER
    end
    ;
    BCD

      • MDHW2018
      • vor 2 Monaten
      • Gemeldet - anzeigen

       > Können Sie mir bitte sagen, wie ich das umgekehrt mache? Also sprich von hexa in dezimal? Vielen Dank

      • mirko3
      • vor 2 Monaten
      • Gemeldet - anzeigen

      Das könnte helfen. Mirko

      function hex2dec(hex : text) do
          let hexarray := split(hex, "");
          let hexarrayReversed := for i in range(length(hex) - 1, -1) do
                  item(hexarray, i)
              end;
          let hexarrayNumber := for i in hexarrayReversed do
                  switch i do
                  case "A":
                      "10"
                  case "B":
                      "11"
                  case "C":
                      "12"
                  case "D":
                      "13"
                  case "E":
                      "14"
                  case "F":
                      "15"
                  default:
                      i
                  end
              end;
          let endArray := for i in range(0, length(hex)) do
                  number(item(hexarrayNumber, i)) * pow(16, i)
              end;
          sum(endArray)
      end;
      
      • MDHW2018
      • vor 2 Monaten
      • Gemeldet - anzeigen

       Hallo Mirko, vielen Dank. Nur wie baue ich es ein? Ich habe z.B ein Textfeld: "hexa" wo gebe ich dieses Eingabefeld für den Hexadezimal in deinem Code an?

      • Developer by Smartplanung
      • smartplanung
      • vor 2 Monaten
      • Gemeldet - anzeigen

       Den Code kannst Du in die globalen Funktionen der Datenbank packen. In dem HEX Feld machst Du bei Trigger nach Änderung:

      if HEX then
         DeinDecimalFeld := hex2dec(HEX)
      end
      

      Alternativ alles in den Trigger nach Änderung:

      function hex2dec(hex : text) do
          let hexarray := split(hex, "");
          let hexarrayReversed := for i in range(length(hex) - 1, -1) do
                  item(hexarray, i)
              end;
          let hexarrayNumber := for i in hexarrayReversed do
                  switch i do
                  case "A":
                      "10"
                  case "B":
                      "11"
                  case "C":
                      "12"
                  case "D":
                      "13"
                  case "E":
                      "14"
                  case "F":
                      "15"
                  default:
                      i
                  end
              end;
          let endArray := for i in range(0, length(hex)) do
                  number(item(hexarrayNumber, i)) * pow(16, i)
              end;
          sum(endArray)
      end;
      if HEX then
        DeinDecimalFeld := hex2dec(HEX)
      end
      
      • mirko3
      • vor 2 Monaten
      • Gemeldet - anzeigen

      Dort wo Du berechnen willst gibst Du die Funktion ein und danach hex2dec(hexa). Du kannst die Funktion als globale Funktion speichern, dann reicht es hex2dec(hexa) einzugeben.

      Da es ein Textfeld ist, was Du übergibst, benötigst Du keine Anführungszeichen. Sonst geht z.B. hex2dec("FFA"). Mirko

      • mirko3
      • vor 2 Monaten
      • Gemeldet - anzeigen

      Ups. Patrick war schneller.

      • Developer by Smartplanung
      • smartplanung
      • vor 2 Monaten
      • Gemeldet - anzeigen

       Sorry 🙈

      • MDHW2018
      • vor 2 Monaten
      • Gemeldet - anzeigen

       Danke hat geklappt 👍🙂

      • MDHW2018
      • vor 2 Monaten
      • Gemeldet - anzeigen

        Danke hat geklappt 👍🙂

    • Torsten_Stang.1
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Bernd,

     

    vielen Dank, klappt einwandfrei!!

     

    lg, Torsten

Content aside

  • vor 2 MonatenZuletzt aktiv
  • 11Antworten
  • 1572Ansichten
  • 3 Folge bereits