Binary to character function?
이전 댓글 표시
So far I have this function:
function char2bin
char=input('Enter a character: ', 's');
char2=(dec2bin(char))
sprintf('%08s',char2)
which takes in a character, and converts it into a vector of 8 0's and 1's, forced to be 8 with the '%08s' thingy.
Next, I need to make a function which will:
1. Convert the vector of bits to a vector ASCII numbers (0 becomes 48, 1 becomes 49).
2. Convert the vector of ASCII numbers to a character string (use the char function).
3. Use the bin2dec function to convert the string into a single ASCII number.
4. Convert the ASCII number into a character.
and I have no idea where to start with that, any help would be great, thank you in advance!
댓글 수: 3
Erik Dekelbaum
2014년 11월 24일
편집: Erik Dekelbaum
2014년 11월 24일
(Note: For #1)
Can you make a function where you add 1 to each "bit"?
Pretty much a function with something like x = x+1 in it
Andrew Ardolino
2014년 11월 24일
Erik Dekelbaum
2014년 11월 24일
It might. Try making a new function where the output is the input vector of bits + 1. Then check the new output variable in the workspace. If the values are all incremented by 1, you know it worked.
답변 (2개)
Guillaume
2014년 11월 24일
1 개 추천
- simply use double(somestring) to get the ASCII values of the character
- to reverse that operation: char(asciivalues)
- doesn't make sense to me
- see 2.
댓글 수: 7
Andrew Ardolino
2014년 11월 24일
Guillaume
2014년 11월 24일
First function is correct for what you want it to do.
Second function is correct for the steps 1 and 2 you asked. I don't see the point of step 2, since you get back the original x. (i.e. chars is the same as x).
However, if this second function is supposed to do the opposite of the first function, then your description is completely wrong, Such a function would be:
function character = bin2char(binvec)
svec = char(binvec + '0'); %convert logical vector to a string of 0-1
character = char(bin2dec(svec)); %convert string to decimal, then to char
end
The above code also shows you how to return a value from a function, so that you can pass it on to another function.
Andrew Ardolino
2014년 11월 25일
Guillaume
2014년 11월 25일
The bin2char I wrote does the steps you've described. I must have misunderstood something in my earlier answer:
- is binvec + '0'
- is char(result_of_1)
- is bin2dec(svec)
- is char(result_of_3)
To be able to pass a result from a function to another, you need to tell the function to return that result, just like I have done with my bin2char
function binvec = char2bin(charinput)
I would actually take out the charinput = input(...) line out of that function and use it in the main script instead
charinput = input(...);
binvec = char2bin(charinput)
origchar = bin2char(binvec)
Usha Padma
2021년 6월 12일
binvec = char2bin(charinput)
origchar = bin2char(binvec)
Please share the code of the function char2bin(charinput) and bin2char(binvec)
out1 = char2bin('Hello, Usha!')
out2 = bin2char(out1)
function binvec = char2bin(charinput)
binvec = reshape((dec2bin(charinput,8) - '0').',1,[]);
end
function origchar = bin2char(binvec)
origchar = char(reshape(bin2dec(reshape(char(binvec + '0'),8,[]).'),1,[]));
end
Usha Padma
2021년 6월 14일
Thank you. It helped me a lot
Image Analyst
2014년 11월 25일
See my latest answer in your original question: http://www.mathworks.com/matlabcentral/answers/163995#comment_251754 I think it does what you want. For example you can send in '123abc' and it will return
strAscii =
011000101100100110011110000111000101100011
asciiLogicalArray =
Columns 1 through 29
0 1 1 0 0 0 1 0 1 1 0 0 1 0 0 1 1 0 0 1 1 1 1 0 0 0 0 1 1
Columns 30 through 42
1 0 0 0 1 0 1 1 0 0 0 1 1
댓글 수: 2
Andrew Ardolino
2014년 11월 25일
Star Strider
2014년 11월 25일
From the documentation (for R2014b):
str = dec2bin(d,n) produces a binary representation with at least n bits.
카테고리
도움말 센터 및 File Exchange에서 Downloads에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!