Not Converting ASCII to DECIMAL
조회 수: 34 (최근 30일)
이전 댓글 표시
I have converted decimal number to ASCII, however I cannot turn the same ASCII code back to it's decimal.
Here is the code:
%DECIMAL TO ASCII
a = 1;
%dec2bin(a); % decimal to binary conversion
b = double(num2str(a)); % decimal to ASCII conversion
%OP TO ASCII
%ASCII TO DECIMAL
c= str2double(b); %ISSUE
d=str2num(b); %ISSUE
댓글 수: 0
답변 (2개)
the cyclist
2019년 11월 23일
c = b-'0'
댓글 수: 2
the cyclist
2019년 11월 24일
I poked around for some specific documentation on this behavior, but didn't find it.
I believe what is happening is that MATLAB converts the character array, so the above is equivalent to
c = b - double('0')
per isakson
2019년 11월 23일
편집: per isakson
2019년 11월 24일
I guess the problem is in the meaning of "Converting ASCII to DECIMAL".
The character '1' is represented by the decimal ascci number 49.
The function double() converts from character to decimal ascci number
>> double('1')
ans =
49
and char() converts from decimal ascci number to character
>> char(49)
ans =
'1'
str2double() and num2str() are something else. Look them up in the documentation.
>> str2double('1')
ans =
1
>>
>> num2str( 1 )
ans =
'1'
>>
댓글 수: 2
per isakson
2019년 11월 24일
편집: per isakson
2019년 11월 24일
Run and answer with the keystrokes "1" and "Enter"
%%
n1=input('Enter n1: ');
class( n1 )
the output in the Command Window will be
Enter n1: 1
ans =
'double'
Thus, n1 returned by input() is already double. Matlab is smart enough to understand that the user wants a double :(
Run and answer with the keystrokes "1" and "Enter"
n1=input('Enter n1: ', 's' ); % notice the 's'
class( n1 )
the output in the Command Window is now
Enter n1: 1
ans =
'char'
The 's' forces input() to return characters and thus
a=double(n1)
returns decimal ascii numbers
a =
49
참고 항목
카테고리
Help Center 및 File Exchange에서 Characters and Strings에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!