# UTC Conversion using Function

This works !!!

could you help me understand if we can use the shift operator to read the data from start to end .

instead of the loops that has been used

``````
var newMsg = {};

var data_time =  msg.payload.data.substr(16, 8)  ;
var Humidity = Number(hexTo8p8(msg.payload.data.substr(16 + 8+4, 4)));

for(var i=1;i<=30;i++)
{
data_time = msg.payload.data.substr(16 * i, 8  );
Temp = Number(hexTo8p8(msg.payload.data.substr(24 * i, 4  )));
Humidity = Number(hexTo8p8(msg.payload.data.substr(28 * i, 4  )));
data = msg.payload.data.substr(16 * i, 8 );
let UTC_ISO = new Date(parseInt(msg.payload.data.substr(16 * i, 8), 16) * 1000).toISOString();
var converted_payload = UTC_ISO.split(/\.|T/).slice(0, 2).join(" ");

var checktime = 1546337502;
if(checktime>data_time)
{

}

time: data_time,

temp: Temp,
humidity: Humidity,

},
{

history: 1

}];
node.send(newMsg);

}

return null;

let P = -69; // @TODO This value should come from MQTT message
let n = 3;
let d = Math.pow(10, ((P - rssi) / (10 * n))); //(n ranges from 2 to 4)
return d * 2;
}

function hexTo8p8(/** @type {string} */ value) {
let intValue = parseInt(value, 16);
let signed = (intValue & 0x8000) > 0 ? -1/10 : 1;
return signed * intValue / Math.pow(2, 8);
}

function int2float( /** @type {string} */value_int) {
// Create new Buffer based on array bytes
const buf = Buffer.from(value_int);
// swap the words
const temp0 = buf[0];
const temp1 = buf[1];
buf[0] = buf[2];
buf[1] = buf[3];
buf[2] = temp0;
buf[3] = temp1;

// Represent these bytes as 32-bit unsigned int

// save the value
``````Similarly can we convert it to unix time stamp in the same way ?