binary process, biner to decimal
2 views (last 30 days)
Show older comments
i have binary number 20 bit (uint8), i want to convert the binary number to decimal. i use bin2dec but before i must convert num2str so i can use bin2dec. 20 bit (1x20) --> num2str --> 1x58 char. when i start to dec2bin, matlab error because binary string must be 52 bits or less. how to overcome this problem ?
1 Comment
Jan
on 21 Mar 2013
The text description of the input is in general less exact as a shart Matlab example. What exactly is "a binary number 20 bit (uint8)? Is this a [1 x 20] uint8 vector, or a [1 x 3] uint8 vector with 4 unused bits?
Accepted Answer
Walter Roberson
on 21 Mar 2013
b = uint8([1 1 0 0 1 1 0 1 0 1 1 1 0 0 1 1 0 1 0 1]);
bin2dec( char(b + '0') )
2 Comments
Walter Roberson
on 22 Mar 2013
'0' is the character representation of zero. add 0 (the number) to it and you will have a value that is still the value for the character representation of '0'. Use char() to turn the value back into the character. So char(0 + '0') is going to be '0'.
Now, the character representation of '1' has a value that is exactly 1 greater than the value for the character representation '0'. ('1' - '0') is 1. So char(1 + '0') = '1'.
Therefore to turn 0 or 1 into '0' or '1', add '0' to the value and take char() of the result.
More Answers (1)
Jan
on 21 Mar 2013
Edited: Jan
on 21 Mar 2013
Guessing that your input is e.g.:
b = uint8([1 1 0 0 1 1 0 1 0 1 1 1 0 0 1 1 0 1 0 1]);
Then assuming, that the 1st element is the most significant bit:
d = 2 .^ (length(b)-1:-1:0) * double(b(:));
This is the dot-product of an [1xN] and [Nx1] vector, such that the sum is calculated implicitly.
See Also
Categories
Find more on Characters and Strings in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!