Buongiorno a tutti,
ho una centralina che mi fornisce l'ora in formato esadecimale in microsecondi dal 01-01-1970 e la funzione che uso mi estrae un valore errato, è possibile
che il valore non ci stia in un campo long ?
HEX
00043871F2A1A3B0 convertito in decimali 1187961959982000 che corrisponde al 24-Aug-2007 13:25:59.982
Dove potrebbe risiedere il problema ?
Grazie
ho una centralina che mi fornisce l'ora in formato esadecimale in microsecondi dal 01-01-1970 e la funzione che uso mi estrae un valore errato, è possibile
che il valore non ci stia in un campo long ?
HEX
Dove potrebbe risiedere il problema ?
B4X:
Sub ByteArrayToNumber(bytes() As Byte, signed As Boolean, bigEndian As Boolean) As Double
Dim result As Long = 0
Dim length As Int = bytes.Length
For i = 0 To length - 1
Dim index As Int
If bigEndian Then
index = length - 1 - i
Else
index = i
End If
result = Bit.Or(result, Bit.And(bytes(index), 0xFF) * Power(256, i))
Next
If signed Then
Dim maxVal As Long = Power(2, length * 8 - 1)
If result >= maxVal Then
result = result - 2 * maxVal
End If
End If
Return result
End Sub
Grazie