# Almost! hex string to decimal value help needed

**URL:** <https://discourse.nodered.org/t/almost-hex-string-to-decimal-value-help-needed/71074>\
**Category:** General\
**Created:** [22 November 2022 19:37 UTC](https://discourse.nodered.org/t/almost-hex-string-to-decimal-value-help-needed/71074 "2022-11-22T19:37:29Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![wwjd1924](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/wwjd1924/32/71253_2.png) [@wwjd1924](https://discourse.nodered.org/u/wwjd1924)\
**Post date:** [22 November 2022 19:37 UTC](https://discourse.nodered.org/t/almost-hex-string-to-decimal-value-help-needed/71074/1 "2022-11-22T19:37:29Z")

</div>

I'm so glad I 'found' node-red, have already some flows working!

But this one I cannot solve: after half a day of trying and searching I'm stuck at the last step: HEX to DECIMAL so I can feed the value to InfluxDB

What I now have is a 'STRING' HEX value but I need to convert it to decimal.

Here is my flow:

```auto
[{"id":"061a039b50b07042","type":"tab","label":"Youless direct","disabled":false,"info":"","env":[]},{"id":"9ca3b0bfbc02dbee","type":"buffer-parser","z":"061a039b50b07042","name":"buffer parser","data":"payload","dataType":"msg","specification":"spec","specificationType":"ui","items":[{"type":"hex","name":"TX_Relay_ID","offset":0,"length":2,"offsetbit":0,"scale":"1","mask":""},{"type":"hex","name":"Packet_ID","offset":2,"length":2,"offsetbit":0,"scale":"1","mask":""},{"type":"hex","name":"RX_Data[0]","offset":4,"length":4,"offsetbit":0,"scale":"1","mask":""},{"type":"hex","name":"RX_Data[1]","offset":8,"length":4,"offsetbit":0,"scale":"1","mask":""},{"type":"hex","name":"RX_Data[2]","offset":12,"length":4,"offsetbit":0,"scale":"1","mask":""},{"type":"hex","name":"RX_Data[3]","offset":16,"length":4,"offsetbit":0,"scale":"1","mask":""}],"swap1":"swap32","swap2":"","swap3":"swap16","swap1Type":"swap","swap2Type":"swap","swap3Type":"swap","msgProperty":"payload","msgPropertyType":"str","resultType":"value","resultTypeType":"return","multipleResult":true,"fanOutMultipleResult":true,"setTopic":true,"outputs":6,"x":490,"y":400,"wires":[["5c50d3bf5b7fdd4f"],["aff6cb1d41795ec9"],["6214fe344107f174"],["ee43a22bf059e4ec"],["4b8801982349a9f9"],["add7f23f54e45522"]]},{"id":"3ca63d7ef88a1e9d","type":"inject","z":"061a039b50b07042","name":"Test UDP packet","props":[{"p":"payload"}],"repeat":"","crontab":"","once":true,"onceDelay":0.1,"topic":"","payload":"[130,0,163,0,214,0,0,0,214,1,0,0,76,0,0,0,176,3,0,0]","payloadType":"bin","x":230,"y":360,"wires":[["9ca3b0bfbc02dbee","b9d543696baed89e"]]},{"id":"5c50d3bf5b7fdd4f","type":"debug","z":"061a039b50b07042","name":"TX_Relay_ID","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":730,"y":300,"wires":[]},{"id":"b9d543696baed89e","type":"debug","z":"061a039b50b07042","name":"raw UDP data","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":740,"y":220,"wires":[]},{"id":"0a5b884999e83813","type":"udp in","z":"061a039b50b07042","d":true,"name":"","iface":"","port":"9889","ipv":"udp4","multicast":"false","group":"","datatype":"buffer","x":260,"y":420,"wires":[["9ca3b0bfbc02dbee"]]},{"id":"aff6cb1d41795ec9","type":"debug","z":"061a039b50b07042","name":"Packet_ID","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":730,"y":340,"wires":[]},{"id":"6214fe344107f174","type":"debug","z":"061a039b50b07042","name":"RX_Data[0]","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":730,"y":380,"wires":[]},{"id":"ee43a22bf059e4ec","type":"debug","z":"061a039b50b07042","name":"RX_Data[1]","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":730,"y":420,"wires":[]},{"id":"4b8801982349a9f9","type":"debug","z":"061a039b50b07042","name":"RX_Data[2]","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":730,"y":460,"wires":[]},{"id":"add7f23f54e45522","type":"debug","z":"061a039b50b07042","name":"RX_Data[3]","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":730,"y":500,"wires":[]}]

```

 ![nr](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/2/9/2958a992913068f6e60eb222a041caeebfac93ae.png)

 ![nr2](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/7/a/7a0463dbc31e6e9f1d9419895991502a37ba25c4.png)

---

<div class="post-metadata">

**Author:** ![Buckskin](https://avatars.discourse-cdn.com/v4/letter/b/b9e5f3/32.png) [@Buckskin](https://discourse.nodered.org/u/Buckskin)\
**Post date:** [22 November 2022 22:01 UTC](https://discourse.nodered.org/t/almost-hex-string-to-decimal-value-help-needed/71074/2 "2022-11-22T22:01:07Z")

</div>

These convert a hex string to decimal, but there may be other ways that those who know more about these things

```auto
	function isHexString(hexString) {
		let l = hexString.length;

		return (parseInt(hexString, 16).toString(16).padStart(l, '0') === hexString.toLowerCase());

	}

	function hexToInteger(hexString, padCount = 2) {
		if (isHexString(hexString)) {
			return parseInt(hexString.slice(-padCount), 16);

		} else {
			return undefined;

		}

	} // End Function hexToInteger()

```

---

<div class="post-metadata">

**Author:** ![wwjd1924](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/wwjd1924/32/71253_2.png) [@wwjd1924](https://discourse.nodered.org/u/wwjd1924)\
**Post date:** [23 November 2022 07:42 UTC](https://discourse.nodered.org/t/almost-hex-string-to-decimal-value-help-needed/71074/3 "2022-11-23T07:42:05Z")

</div>

Thank you very much for your reply! Although it is too complicated for me and I don't understand that code... I had hoped there is a Node-Red' way to do that, without much code.

But your time is valuable so thanks again...!

---

<div class="post-metadata">

**Author:** ![Colin](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/colin/32/17040_2.png) [@Colin](https://discourse.nodered.org/u/Colin)\
**Post date:** [23 November 2022 09:59 UTC](https://discourse.nodered.org/t/almost-hex-string-to-decimal-value-help-needed/71074/4 "2022-11-23T09:59:23Z")

</div>

I thought the buffer parser could do that for you. Have you tried different settings for the Type dropdown?

---

<div class="post-metadata">

**Author:** ![wwjd1924](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/wwjd1924/32/71253_2.png) [@wwjd1924](https://discourse.nodered.org/u/wwjd1924)\
**Post date:** [23 November 2022 12:11 UTC](https://discourse.nodered.org/t/almost-hex-string-to-decimal-value-help-needed/71074/5 "2022-11-23T12:11:32Z")

</div>

Oh yes, tried a lot of things... Maybe I first need to split up the UDP packet in the separate values first, don't know but I'm not giving up yet...

---

<div class="post-metadata">

**Author:** ![Colin](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/colin/32/17040_2.png) [@Colin](https://discourse.nodered.org/u/Colin)\
**Post date:** [23 November 2022 13:17 UTC](https://discourse.nodered.org/t/almost-hex-string-to-decimal-value-help-needed/71074/6 "2022-11-23T13:17:39Z")

</div>

What do the uint16 settings give?

---

<div class="post-metadata">

**Author:** ![wwjd1924](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/wwjd1924/32/71253_2.png) [@wwjd1924](https://discourse.nodered.org/u/wwjd1924)\
**Post date:** [23 November 2022 13:37 UTC](https://discourse.nodered.org/t/almost-hex-string-to-decimal-value-help-needed/71074/7 "2022-11-23T13:37:09Z")

</div>

Will try, but I found the solution after many, many hours of trying and searching.

a reply from @Andrei in [this](https://discourse.nodered.org/t/convert-bytes-to-integer/15153/6) post got me thinking. I needed to rightly divide and then swap the bytes to get the right values.

This is a working flow:

```auto
[{"id":"4fd79fd65858d998","type":"debug","z":"588a292e181fe8c9","name":"debug 5","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":680,"y":560,"wires":[]},{"id":"11489a0252196e01","type":"binary","z":"588a292e181fe8c9","name":"","property":"payload","pattern":"l16 => packet_id, l16 => tx_relay, l32 => packet_1, l32 => packet_2, l32 => packet_3, l32 => packet_4","x":470,"y":560,"wires":[["4fd79fd65858d998"]]},{"id":"afd3a9e3d033d5b5","type":"inject","z":"588a292e181fe8c9","name":"Test UDP packet","props":[{"p":"payload"}],"repeat":"","crontab":"","once":true,"onceDelay":0.1,"topic":"","payload":"[130,0,163,0,214,0,0,0,214,1,0,0,76,0,0,0,176,3,0,0]","payloadType":"bin","x":250,"y":560,"wires":[["11489a0252196e01","03610996fc811d7a"]]},{"id":"03610996fc811d7a","type":"debug","z":"588a292e181fe8c9","name":"debug 6","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":300,"y":640,"wires":[]}]

```

---

<div class="post-metadata">

**Author:** ![wwjd1924](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/wwjd1924/32/71253_2.png) [@wwjd1924](https://discourse.nodered.org/u/wwjd1924)\
**Post date:** [23 November 2022 13:42 UTC](https://discourse.nodered.org/t/almost-hex-string-to-decimal-value-help-needed/71074/8 "2022-11-23T13:42:20Z")

</div>

double post

---

<div class="post-metadata">

**Author:** ![wwjd1924](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/wwjd1924/32/71253_2.png) [@wwjd1924](https://discourse.nodered.org/u/wwjd1924)\
**Post date:** [23 November 2022 13:43 UTC](https://discourse.nodered.org/t/almost-hex-string-to-decimal-value-help-needed/71074/9 "2022-11-23T13:43:33Z")

</div>

Thank you for your time and directions, I really appreciate that very much.

---

<div class="post-metadata">

**Author:** ![wwjd1924](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/wwjd1924/32/71253_2.png) [@wwjd1924](https://discourse.nodered.org/u/wwjd1924)\
**Post date:** [23 November 2022 17:44 UTC](https://discourse.nodered.org/t/almost-hex-string-to-decimal-value-help-needed/71074/10 "2022-11-23T17:44:59Z")

</div>

to be complete, for others maybe who are looking for such a solution, here is the flow...

```auto
[{"id":"6ad195b70dd7b0de","type":"tab","label":"Flow 7","disabled":false,"info":"","env":[]},{"id":"03e628dbdbbddd43","type":"udp in","z":"6ad195b70dd7b0de","name":"WeatherDuino UDP","iface":"","port":"9889","ipv":"udp4","multicast":"false","group":"","datatype":"buffer","x":150,"y":160,"wires":[["f5f4b0ac9de7a12b"]]},{"id":"2b858bac73dca7f6","type":"comment","z":"6ad195b70dd7b0de","name":"Explanation of the UDP packet","info":"Decoding a WeatherDuino UDP packet\n\n======================================================================================\nSent out bij the 8266 controller is a 20 byte packet.\nfor example this packet with the Temperature and Humidity values:\n\noutput is only one line of course, values below are formatted and DEC\nvalues are added\n\n Contents HEX: 82,0, A3,0, D6,0,0,0, D6,1,0,0, 4C,0,0,0, B0,3,0,0\n Contents DEC: 130,0,163,0, 214,0,0,0, 214,1,0,0, 76,0,0,0, 176,3,0,0\n\nShould result in (this example):\n\nPacket_ID 2 bytes/16bits = 130 (id 130 = temp and humidity packet)\nTX_Relay 2 bytes/16bits = A3 (no hex to dec conversion needed)\nTemp in 4 bytes/32bits = 214 (/10 = 21,4 C)\nHum in 4 bytes/32bits = 470 (/10 = 47,0 %RH)\nTemp out 4 bytes/32bits = 76 (/10 = 7,6 C)\nHum out 4 bytes/32bits = 944 (/10 = 94,4 %RH)\n \n\n1st 4 bytes >> must be divided into TWO 2 byte values\n\n--- -------- -------- \nDEC 130, 0\nHEX 82, 0\nBIN 10000010,00000000 16bit SWAP is needed\n\n--- -------- --------\nDEC 163, 0\nHEX A3, 0 \nBIN 10100011,00000000 16bit SWAP is needed\n\n\n2nd 4 bytes / 32bits \n--- -------- -------- -------- --------\nDEC 214, 0, 0, 0\nHEX D6, 0, 0, 0 \nBIN 11010110,00000000,00000000,00000000 32 bit swap needed\n\n\n3rd 4 bytes \n--- -------- -------- -------- --------\nDEC 214, 1, 0, 0\nHEX D6, 1, 0, 0 \nBIN 11010110,00000001,00000000,00000000 32 bit swap needed\n\n4th 4 bytes\n--- -------- -------- -------- --------\nDEC 214, 0, 0, 0\nHEX D6, 0, 0, 0 \nBIN 11010110,00000000,00000000,00000000 32 bits swap needed\n\n5th 4 bytes\n--- -------- -------- -------- --------\nDEC 214, 0, 0, 0\nHEX D6, 0, 0, 0 \nBIN 11010110,00000000,00000000,00000000 32 bit swap needed\n\n\n","x":180,"y":120,"wires":[]},{"id":"05651916ebb427fb","type":"switch","z":"6ad195b70dd7b0de","name":"","property":"payload.Packet_ID","propertyType":"msg","rules":[{"t":"eq","v":"128","vt":"num"},{"t":"eq","v":"130","vt":"num"},{"t":"eq","v":"132","vt":"num"},{"t":"eq","v":"133","vt":"num"}],"checkall":"true","repair":false,"outputs":4,"x":150,"y":380,"wires":[["2b7f1cf57a438dd3"],["4ffc1c3f537ce39f"],["0582d9c7be326a6a"],["f4963b9f79054891"]]},{"id":"ec74a332f695d16b","type":"debug","z":"6ad195b70dd7b0de","name":"Packet_ID == 128","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":650,"y":320,"wires":[]},{"id":"197e2c4320ff4bba","type":"debug","z":"6ad195b70dd7b0de","name":"Packet_ID == 130","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":650,"y":360,"wires":[]},{"id":"d87a5eb753d49f88","type":"debug","z":"6ad195b70dd7b0de","name":"Packet_ID == 132","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":650,"y":400,"wires":[]},{"id":"f5f4b0ac9de7a12b","type":"buffer-parser","z":"6ad195b70dd7b0de","name":"buffer parser","data":"payload","dataType":"msg","specification":"spec","specificationType":"ui","items":[{"type":"int16le","name":"Packet_ID","offset":0,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"int32le","name":"Value_1","offset":4,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"int32le","name":"Value_2","offset":8,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"int32le","name":"Value_3","offset":12,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"int32le","name":"Value_4","offset":16,"length":1,"offsetbit":0,"scale":"1","mask":""}],"swap1":"","swap2":"","swap3":"swap16","swap1Type":"swap","swap2Type":"swap","swap3Type":"swap","msgProperty":"payload","msgPropertyType":"str","resultType":"keyvalue","resultTypeType":"return","multipleResult":false,"fanOutMultipleResult":true,"setTopic":true,"outputs":1,"x":170,"y":240,"wires":[["05651916ebb427fb"]]},{"id":"8459954a6025a342","type":"inject","z":"6ad195b70dd7b0de","name":"Test UDP packet","props":[{"p":"payload"}],"repeat":"","crontab":"","once":true,"onceDelay":0.1,"topic":"","payload":"[132,0,163,0,214,0,0,0,214,1,0,0,76,0,0,0,176,3,0,0]","payloadType":"bin","x":410,"y":160,"wires":[["f5f4b0ac9de7a12b"]]},{"id":"0582d9c7be326a6a","type":"change","z":"6ad195b70dd7b0de","name":"Process 132 - Wind","rules":[{"t":"move","p":"payload.Value_1","pt":"msg","to":"payload.wind_gust","tot":"msg"},{"t":"set","p":"payload.wind_gust","pt":"msg","to":"payload.wind_gust / 1000","tot":"jsonata"},{"t":"move","p":"payload.Value_2","pt":"msg","to":"payload.wind_speed","tot":"msg"},{"t":"set","p":"payload.wind_speed","pt":"msg","to":"payload.wind_speed /1000","tot":"jsonata"},{"t":"move","p":"payload.Value_3","pt":"msg","to":"payload.wind_dir","tot":"msg"},{"t":"set","p":"payload.wind_dir","pt":"msg","to":"$abs(payload.wind_dir /10)","tot":"jsonata"},{"t":"delete","p":"payload.Value_4","pt":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":350,"y":400,"wires":[["d87a5eb753d49f88"]]},{"id":"ae89d5731ff34f6c","type":"debug","z":"6ad195b70dd7b0de","name":"Packet_ID == 133","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":650,"y":440,"wires":[]},{"id":"2b7f1cf57a438dd3","type":"change","z":"6ad195b70dd7b0de","name":"Process 128 - Pressure","rules":[{"t":"move","p":"payload.Value_1","pt":"msg","to":"payload.barometer","tot":"msg"},{"t":"set","p":"payload.barometer","pt":"msg","to":"$abs(payload.barometer / 1000)","tot":"jsonata"},{"t":"delete","p":"payload.Value_2","pt":"msg"},{"t":"delete","p":"payload.Value_3","pt":"msg"},{"t":"delete","p":"payload.Value_4","pt":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":370,"y":320,"wires":[["ec74a332f695d16b"]]},{"id":"4ffc1c3f537ce39f","type":"change","z":"6ad195b70dd7b0de","name":"Process 130 - Temp / Hum","rules":[{"t":"move","p":"payload.Value_1","pt":"msg","to":"payload.temp_inside","tot":"msg"},{"t":"set","p":"payload.temp_inside","pt":"msg","to":"payload.temp_inside / 10","tot":"jsonata"},{"t":"move","p":"payload.Value_2","pt":"msg","to":"payload.humidity_inside","tot":"msg"},{"t":"set","p":"payload.humidity_inside","pt":"msg","to":"payload.humidity_inside / 10","tot":"jsonata"},{"t":"move","p":"payload.Value_3","pt":"msg","to":"payload.temp_outside","tot":"msg"},{"t":"set","p":"payload.temp_outside","pt":"msg","to":"payload.temp_outside /10","tot":"jsonata"},{"t":"move","p":"payload.Value_4","pt":"msg","to":"payload.humidity_outside","tot":"msg"},{"t":"set","p":"payload.humidity_outside","pt":"msg","to":"payload.humidity_outside /10","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":380,"y":360,"wires":[["197e2c4320ff4bba"]]},{"id":"f4963b9f79054891","type":"change","z":"6ad195b70dd7b0de","name":"Process 133 - Rain","rules":[{"t":"move","p":"payload.Value_1","pt":"msg","to":"payload.rain_conversion_factor","tot":"msg"},{"t":"move","p":"payload.Value_2","pt":"msg","to":"payload.rain_rate","tot":"msg"},{"t":"set","p":"payload.rain_rate","pt":"msg","to":"(payload.rain_rate * payload.rain_conversion_factor) / 10","tot":"jsonata"},{"t":"move","p":"payload.Value_3","pt":"msg","to":"payload.rain_today","tot":"msg"},{"t":"set","p":"payload.rain_today","pt":"msg","to":"(payload.rain_today * payload.rain_conversion_factor) / 1000","tot":"jsonata"},{"t":"delete","p":"payload.Value_4","pt":"msg"},{"t":"delete","p":"payload.rain_conversion_factor","pt":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":350,"y":440,"wires":[["ae89d5731ff34f6c"]]}]

```

 ![nr4](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/3/a/3a9acb34981ef28e6c5d38185828c521f4a9c2ba.png)

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/1X/d073cd938eafa2e558d7c2cd59003b3ef4963033.png) [@system](https://discourse.nodered.org/u/system)\
**Post date:** [7 December 2022 17:45 UTC](https://discourse.nodered.org/t/almost-hex-string-to-decimal-value-help-needed/71074/11 "2022-12-07T17:45:15Z")

</div>

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.
