I want to do the following.
msg.payload[8]=12
msg.payload[9]=39161
I want to convert msg.payload[8] and [9] to Hex numbers (respectively C and 98F9).
I have several issues.
- how do I convert to Hex numbers
- how do I convert from Hex to decimal. I tried
var HexNumber = 'C98F9';
msg.payload = parseInt(HexNumber);
return msg;
But that resulted in NaN
0xF will result in 15
I'm a newbie in Node-Red, any help is appreciated.
John
When you say you want to convert it to a hex number, do you mean that you want a string containing "98f9"? If you are not sure what that means then tell us what do you want to do with the hex number.
I want to convert both payloads to Hex and then combine both Hex numbers and convert to a decimal number
So If I can convert the payloads to Hex (resulting in C and 98FG) and combine these strings (resulting in C98FG) it is ok. After that the string containing the Hex number should be converted to a decimal value (end result 825593).
John
You don't need to convert it at all, just shift the first value left 16 bits and add on the second
msg.payload = (msg.payload[8] <<16) + (msg.payload[9] & 0xffff)
return msg
The and with 0xffff is to force it to an unsigned value, as, for example, if the second word was -1 it would actually mean 65535
Thanks a lot, this is much simpler as in C++.
John
This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.