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

 Réponse acceptée

Star Strider
Star Strider le 1 Jan 2020
Modifié(e) : Star Strider le 1 Jan 2020

1 vote

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 commentaires

homa maleki
homa maleki le 1 Jan 2020
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 le 1 Jan 2020
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 le 1 Jan 2020
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 le 1 Jan 2020
its by "quotes
Star Strider
Star Strider le 1 Jan 2020
That means it is a string array, not a char array.
The changes in my code should now accommodate both.
homa maleki
homa maleki le 1 Jan 2020
Thank you so much it is working now
Star Strider
Star Strider le 1 Jan 2020
My pleasure.
If my Answer helped you solve your problem, please Accept it!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Characters and Strings dans Centre d'aide et File Exchange

Produits

Version

R2019a

Community Treasure Hunt

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

Start Hunting!

Translated by