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
Image Analyst
Image Analyst 2020 年 1 月 1 日
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?
Star Strider
Star Strider 2020 年 1 月 1 日
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" ?
Star Strider
Star Strider 2020 年 1 月 1 日
@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 ExchangeCharacters and Strings についてさらに検索

製品

リリース

R2019a

Community Treasure Hunt

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

Start Hunting!

Translated by