0

I understand this question is oddly phrased, so let me explain with 2 examples.

Example 1
The code below turns the series of values [64, 176, 0, 86, 68, 97, 136, 8] into the float 4096.336980910979.

(new DataView(new Uint8Array([64, 176, 0, 86, 68, 97, 136, 8]).buffer)).getFloat64();
/*Output 4096.336980910979*/

How do I reverse it to get the series of values [64, 176, 0, 86, 68, 97, 136, 8] when I input the float 4096.336980910979?

Example 2:
The code below turns the series of values [70, 253, 192, 0] into the float 32480.

(new DataView(new Uint8Array([70, 253, 192, 0]).buffer)).getFloat32();
/*Output 32480*/

How do I reverse it to get the series of values [70, 253, 192, 0] when I input the float 32480?

quicVO
  • 778
  • 4
  • 13
  • May be this can help? https://stackoverflow.com/questions/46196990/convert-float-values-to-uint8-array-in-javascript – Tushar Gupta Jan 25 '21 at 00:13
  • @Tushar, unfortunately that did not help because that is conversion between two different TypedArrays rather than conversion of numbers to and from TypedArrays :( – quicVO Jan 25 '21 at 00:51

1 Answers1

0

I have created a solution!

Float 32 solution:

var arrayBuffer = new ArrayBuffer(4); /*Create an Array Buffer (Blank)*/
var floatArray = new Float32Array(arrayBuffer); /*Use the Float32 instance of the Buffer*/
var uintArray = new Uint8Array(arrayBuffer); /*Use the Uint8 instance of the Buffer*/

floatArray[0] = 32480; /*Define a value to the Float32Array*/
/*In order to correctly access the Uint8Array, it must be reversed for some reason?!*/
var newUintArray = uintArray.reverse();
var newarr = (new DataView(newUintArray.buffer)).getFloat32();

The variable newarr should equal 32480 and the variable newUintArray can be used to access the reversed dataview.

Float 64 solution:

var arrayBuffer = new ArrayBuffer(8);
var floatArray = new Float64Array(arrayBuffer);
var uintArray = new Uint8Array(arrayBuffer);

floatArray[0] = 30543;
var newUintArray = uintArray.reverse();
var newarr = (new DataView(newUintArray.buffer)).getFloat64();
quicVO
  • 778
  • 4
  • 13