9

I have a basic question. Say I have a Uint16Array and I have number 4 in it.

data_16=new Uint16Array([4]);  

Now I have a length 1 and byteLength 2;

how do i convert this to Uint8Array.

I do not want to create a new view.

data_8 = new Uint8Array(data_16)

If I do this I get array length 1 and byteLength 1. This is not what I want.

I need to stretch that 16 bit value in 16array into 8 bit values so that 8bit array so it would end up with 2 values int 8 bit array.

I can just create a funtion which converts with shif and to all that stuff. But Can it be done with Array manipulation only?

2 Answers 2

16

You can use the buffer property, i.e. data_8 = new Uint8Array(data_16.buffer, data_16.byteOffset, data_16.byteLength).

Sign up to request clarification or add additional context in comments.

1 Comment

I suggest new Uint8Array(data_16.buffer, data_16.byteOffset, data_16.byteLength), because in the general case there's no guarantee that data_16 views all of its backing ArrayBuffer.
2

Would like to note that the current accepted answer may not work because of the byte order is platform dependent.

2 Comments

Your answer could be improved with additional supporting information. Please edit to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers in the help center.
This does not provide an answer to the question. Once you have sufficient reputation you will be able to comment on any post; instead, provide answers that don't require clarification from the asker. - From Review

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.