Ich habe Probleme beim Konvertieren von Datentypen. Ich muss ein Double nach Byte bringen da ich das per MQTT senden möchte. Aber ich erhalte nur kryptische Zeichen.
B4X:
Dim BC As ByteConverter
Dim dbl As Double = 10.00
Dim bytes() As Byte = BC.DoublesToBytes(Array As Double(dbl))
Log(bytes)
Datentyp Double belegt 4 Bytes bei B4R/Arduino , will heissen das eine Flieskommazahl intern mit 4 Bytes gespeichert wird.
Die Anzeige der Bytes interpretiert man nur richtig, wenn man einen IEEE 754 Konverter in der Birne eingebaut hat oder mit dem ByteConverter.
B4X:
Dim BC As ByteConverter
Dim dbl As Double = 10.00
Dim bytes() As Byte = BC.DoublesToBytes(Array As Double(dbl))
Log(bytes(0),TAB,bytes(1),TAB,bytes(2),TAB,bytes(3))
Dim b(4) As Byte
Dim BC As ByteConverter
BC.ArrayCopy2(bytes, 0, b, 0, 4)
Dim d() As Double = BC.DoublesFromBytes(b)
Log(d(0)) 'Anzeige 10
aufwändig für basic... Aber ich habe es etwas einfacher hingekriegt. B4R interpretiert Zahlen die man statt Strings angibt als String. Da kann man das also auch etwas einfacher machen:
B4X:
Dim BC As ByteConverter
Dim dbl As Double = 10.00
Dim bytes() As Byte
bytes = BC.StringToBytes(dbl) 'Die Double Var wird autom. nach String gewandelt...
Log(bytes)