Conversion from uint8 to ascii to number

40 次查看(过去 30 天)
I am currently working with RS232 serial communication between a Trimble gps and a Speedgoat real time computer in Simulink. From the buffer in the Speedgoat i receive a uint8 array, that i want to convert to a the corresponding ascii value and then convert the new array into one double.
For example
uint8: [48 46 56 52] -> [0 . 8 4] -> 0.84
Help would be much appreciated!
  2 个评论
Zhengyi Chen
Zhengyi Chen 2019-4-11
You can convert uin8 data into char and use str2double() function to conver the strings in to double data type.

请先登录,再进行评论。

回答(3 个)

Walter Roberson
Walter Roberson 2012-10-16
str2double(char(TheArray))
  1 个评论
Carl-Johan Elm
Carl-Johan Elm 2012-10-24
Thanks but you can not use the char() or str2double() command in embedded matlab functions in simulink. =(

请先登录,再进行评论。


José-Luis
José-Luis 2012-10-24
Somewhat convoluted, depends on whether you can use sprintf() and sscanf():
your_ascii = [48 46 56 52];
your_ascii = your_ascii - '0';
your_string = sprintf('%i',your_ascii);
% your_string = regexprep(your_string,'-','.'); %This could work also, instead of the indexing
your_string(your_string == '-') = '.';
your_val = sscanf(your_string,'%f');

Andrei Bobrov
Andrei Bobrov 2012-10-24
a = uint8([50 48 46 48 48 56 52] );
i0 = a == 46;
a1 = a(~i0)-'0';
out = double(a1)*(10.^(numel(a1)-1:-1:0).')*10^-(find(i0)+1);

类别

Help CenterFile Exchange 中查找有关 String 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by