How to convert 2 byte data to integer?
357 ビュー (過去 30 日間)
I have a two byte data (unsigned) as array.
e.g. x=[255 67]
I read the data from a sensor giving a stream of byte data (unsigned 0 to 255). From them I select corresponding two-byte of data set for necessary parameter calculation.
I want to convert this into an Integer value or a double value to do real mathematic calculations.
I tried with.
x=uint8([1 0]) y=typecast(x,'uint32') % but this gives an error.
if I use: x=uint16([255 67]) y=typecast(x,'uint32')
% answer is
I don't how to check the answer is correct or not. Or the conversion syntax is correct?
Can anyone give me the code for correct 2-byte data conversion to integer..!
Guillaume 2015 年 1 月 26 日
編集済み: Guillaume 2015 年 1 月 26 日
You were nearly there. combining two bytes (uint8) does not make a 32-bit number (uint32), but a 16-bit numbers (uint16), so:
x = [255 67];
y = typecast(uint8(x), 'uint16');
You haven't specified the endianness of your data, nor that of your machine. If the two don't match, you'll have to swapbytes afterward:
truey = swapbytes(y); %if one is big-endian and the other litte-endian
その他の回答 (2 件)
Image Analyst 2015 年 1 月 26 日
編集済み: Image Analyst 2015 年 1 月 26 日
I don't know which element of x is the upper or lower byte, so I did it both ways. Try this:
% Display bytes in binary.
% If x(1) is the most significant byte:
x_uint16 = uint16(256*x(1) + x(2))
% If x(1) is the least significant byte:
x_uint16 = uint16(256*x(2) + x(1))
Note that x must be a double or a uint16 variable, not a char or uint8 variable or else you can't multiply by 256.
In the command window, you'll see:
You can replace uint16 by double if you want the data type to be double instead of uint16.