hoe in Javascript van Hex naar Float

Status
Niet open voor verdere reacties.

henrproject

Nieuwe gebruiker
Lid geworden
2 nov 2016
Berichten
4
Hallo,

Ik heb een voorbeeld waarin staat wat een uitkomst moet zijn van een stukje serial rs485 return bericht :

voorbeeld in handleiding :

34 31 43 38 30 30 30 30 Battery temperature-float: 0000c841=25 ( waarbij 25 dan de temperatuur in Celcius is )

Hoe ziet een dergelijke code er uit in javascript.

of hoe maak ik van 0000c841 ( hex ? ) dat de uitkomst 25 is ?

ik heb zeer weinig know how van programmeren, maar ik begrijp wel dat ik volgens mij te maken heb met (4byte)Float , little or big endian, Hex en reverse materie.

alleen hoe ?

EDIT : oplossing ( even algemeen gemaakt )

Code:
//extract usable data from the returned Hex

function hex2float(num) {
    var sign = (num & 0x80000000) ? -1 : 1;
    var exponent = ((num >> 23) & 0xff) - 127;
    var mantissa = 1 + ((num & 0x7fffff) / 0x7fffff);
    return sign * mantissa * Math.pow(2, exponent);
}

//make it a nice 4 digits number

function roundToTwo(num) {    
    return +(Math.round(num + "e+2")  + "e-2");
}


print or whatever (roundToTwo(hex2float("0x"+<yourhexInput>)));

( sometimes there is the need to flip the bytes/Hex to become the right input )

for example :
Code:
function swap32(val) {
    return ((val & 0xFF) << 24)
           | ((val & 0xFF00) << 8)
           | ((val >> 8) & 0xFF00)
           | ((val >> 24) & 0xFF);
}
 
Laatst bewerkt:
Dank voor je mee denken Ed.

die had ik al een paar keer geprobeerd, maar krijg er geen vat op.

ik copy paste dat stukje in een javascrip venstertje , en krijg steeds :

Script error: sun.org.mozilla.javascript.EvaluatorException: missing ; before statement

en daar ben ik al uren mee aan het zoeken geweest wat dat nou in houd. zal vast basis javascript zijn, maar ik zie het niet helaas.
 
Die melding zegt dus dat je ergens een ; teken mist.
 
Ja dat snap ik, en waarschijnlijk voor de "statement" , maar waar is dat ?
 
rondom deze code zal nog enkele regels moeten om er een " hello world " voorbeeld van te maken neem ik aan ?

met een PRINT (uitkomst) als laatste zeg maar, dan is het makkelijker te begrijpen denk ik.



Code:
public class Test  {
  public static void main (String[] args) {

        String myString = "BF800000";
        Long i = Long.parseLong(myString, 16);
        Float f = Float.intBitsToFloat(i.intValue());
        System.out.println(f);
        System.out.println(Integer.toHexString(Float.floatToIntBits(f)));
  }
}

dat zou al heel verhelderend zijn.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan