Hi, how can I convert a 96 bit binary string to the 8-bit ascii? I should find a sentence

 채택된 답변

Star Strider
Star Strider 2020년 1월 1일
편집: Star Strider 2020년 1월 1일

1 개 추천

Try this:
binstr = char(randi([0 1]+'0', 1, 96)); % Create (Random) Binary Character Vector
binstr8 = reshape(binstr, [], 8); % Reshape To (12x8) Character Array
binmtx = bin2dec(binstr8); % Convert Binary Character Array To Decimal Column Vector
chrmtx = char(binmtx); % Convert Decimal Column Vector To Character Column Vector
You can combine these into one line if you want to. I kept them separate to demonstrate how the code works.
EDIT — (1 Jan 2020 at 18:13)
chrmtx = @(x) char(bin2dec(reshape(x(:).',[],8))); % One-Line Anonymous Function Version Of This Code
Out = chrmtx(binstr);

댓글 수: 10

homa maleki
homa maleki 2020년 1월 1일
thank you for helping ,
this is my answer for a question and I should change this to the ascii 8bit text
result = "010010010111001101101110001001110111010000100000011100000111001001101111011000100110000101100010011010010110110001101001011101000111100100100000011001110111001001100101011000010111010000111111"
I couldnt find answer with your code
binstr = '010010010111001101101110001001110111010000100000011100000111001001101111011000100110000101100010011010010110110001101001011101000111100100100000011001110111001001100101011000010111010000111111'
% binstr = char(randi([0 1]+'0', 1, 96)); % Create (Random) Binary Character Vector
binstr8 = reshape(binstr, [], 8) % Reshape To (12x8) Character Array
binmtx = bin2dec(binstr8) % Convert Binary Character Array To Decimal Column Vector
chrmtx = char(binmtx) % Convert Decimal Column Vector To Character Column Vector
Worked for me. What did you do differently?
One change to ‘binstr8’:
binstr8 = reshape(binstr(:), 8, []).'; % Reshape To (12x8) Character Array
and one change to ‘Out’:
Out = char(binmtx).' % Convert Decimal Column Vector To Character Column Vector
produces:
Out =
'Isn't probability great?'
Similar changes to the ‘chrmtx’ function:
chrmtx = @(x) char(bin2dec(reshape(x(:),8,[]).')).';
Out = chrmtx(binstr)
produces the same output.
homa maleki
homa maleki 2020년 1월 1일
Error using reshape
Product of known dimensions, 8, not divisible into total number of elements, 1.
and binstr8 gives me 24x8 matrix
Walter Roberson
Walter Roberson 2020년 1월 1일
Is your x a character vector, or is it a string() object? When you display it, does it show up surrounded by ' quotes such as 'abc' or does it show up surrounded by " quotes like "abc" ?
@homa maleki —
Change ‘binstr8’ to:
binstr8 = reshape(char(binstr(:)), 8, []).'; % Reshape To (12x8) Character Array
and:
chrmtx = @(x) char(bin2dec(reshape(char(x(:)),8,[]).')).'; % One-Line Anonymous Function Version Of This Code
This illustrates the problem of not having your data to work with at the outset.
homa maleki
homa maleki 2020년 1월 1일
its by "quotes
Star Strider
Star Strider 2020년 1월 1일
That means it is a string array, not a char array.
The changes in my code should now accommodate both.
homa maleki
homa maleki 2020년 1월 1일
Thank you so much it is working now
Star Strider
Star Strider 2020년 1월 1일
My pleasure.
If my Answer helped you solve your problem, please Accept it!

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Characters and Strings에 대해 자세히 알아보기

제품

릴리스

R2019a

질문:

2020년 1월 1일

댓글:

2020년 1월 1일

Community Treasure Hunt

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

Start Hunting!

Translated by