Hexadezimalwerte konvertieren

Hallo Support,

eine API stellt mir einen Zeitstempel als Hexadezimalwert zur Verfügung.

Diesen konnte ich über Umwege in einen dezimalen Wert konvertieren. Könntet ihr eine Funktion zur Konvertierung von Hexadezimalwerten hinzufügen, damit ich zukünftig nicht mehrm meine "Frickellösung" nutzen muss?


Grüße


Oliver Lentzen



Das sollte machbar sein.

Kannst du der Vollständigkeit halber bitte noch mal 1-2 Beispiele posten von Hex-Wert und erwartetem Zielwert?


Kannst du bitte auch noch deine "Frickellösung" posten? Wäre mal interessant, wie du rangegangen bist.

Wir packen das dann mit ins Backlog und versuchen dafür demnächst mal Zeit zu finden.

Beispiele

HEX= 5b3f6601 DEC= 1530881537 DATETIME= 06.07.2018 14:52

HEX= 5b27a735 DEC= 1529325365 DATETIME= 18.06.2018 14:36


Meine Lösung besteht aus einem KeyValueSpreadsheet, das die HEX-Werte ihrem dezimalen Werten zuordnet und folgendem Freemarkerskript.


<#assign _decTimestamp = 0 />

<#assign _hexBaseArray = [268435456,16777216,1048576,65536,4096,256,16,1]>

<#assign _upperID = _arrid!?upper_case>

<#list 0..7 as i>

<#assign _element = _upperID!?substring(i,i+1)>

<#if meta.map@KeyValueSpreadsheet_11.containsKey(row[_element])>

<#assign z = meta.map@KeyValueSpreadsheet_11.get(_element)>

<#assign _hexBase = _hexBaseArray[i]!>

<#assign _hexBaseNum = _hexBase?trim?number>

<#assign temp = z?number*_hexBaseNum>

<#assign _decTimestamp = _decTimestamp + temp?number>

</#if>

</#list>

${(_decTimestamp*1000)?number_to_datetime?string("dd.MM.yyyy HH:mm")}

Danke für die Rückmeldung. Wir planen einen neue Freemarker Funktion ein.


Beispiel:

hextonumber("0x5b3f6601") => 1530881537
hextonumber("5b3f6601") => 1530881537


Die neue Funktion hextonumber und das Gegenstück numbertohex ist live:


${hextonumber("0x5b3f6601")} -> 1530881537

${numbertohex("1530881537")} -> 5b3f6601