4byte uint8 array to single uint32 value

76 views (last 30 days)
I have an uint8 array containing 4 elements each representing 1byte.
myArray = [0x32 0x45 0x56 0x81] % just an example
% looks like this: myArray(1)=8bit, myArray(2)=8bit, myArray(3)=8bit, myArray(4)=8bit]
I mainly need to extract all the 32 bits and combine them to one uint32 value:
myValue = 0x32455681
%should look like this 32bit: myArray(1)myArray(2)myArray(3)myArray(4)
The goal is basically to remove the array structure and chain all the 32bits together
I once came from such an uint32 number and used the rearrange and bitget function to crate this array structure, but I somehow don't see how to come back.
As an important requirement, all the used functions must be able to be generate to C code
Any ideas?

Accepted Answer

Ameer Hamza
Ameer Hamza on 7 Dec 2020
Edited: Ameer Hamza on 7 Dec 2020
You can use typecast()
myArray = [0x32 0x45 0x56 0x81];
out = swapbytes(typecast(myArray, 'uint32')); % swapbytes is needed on little-endian systems
Result
>> out
out =
uint32
843404929
>> dec2hex(out)
ans =
'32455681'
  7 Comments
Steven Lord
Steven Lord on 25 May 2023 at 6:12
format longg
x = randi([intmin('uint32') intmax('uint32')], 1)
x =
3159077208
y = typecast(x, 'uint8')
y = 1×8
0 0 0 43 118 137 231 65
format hex
x
x =
41e789762b000000
y
y = 1×8
00 00 00 2b 76 89 e7 41
swapbytes(x)
ans =
0000002b7689e741

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!