2016-08-04 140 views
2

根據符號的ASCII碼(或任何其他字符編碼表),應使用什麼MATLAB函數將字符串轉換爲二進制數字數組,反之亦然。例如:將字符串轉換爲位序列(反之亦然)

str = 'ab'; 
bin = toBinSeq(str); % so that we get smth like bin=[ 0 0 1 1 1 1 0 1 0 0 1 1 1 1 1 0 ] 
str2 = backToStr(bin); % so that we get str2='ab' 

回答

1

這不是一個完整的答案,但它應該足以讓你有:

str = 'ab' 
dec = double(str) 
bin = dec2bin(str) 
+1

爲什麼你需要dec = double(str)?沒有它的結果是一樣的 – Glinka

+0

@Glinka如果轉換隱式發生,那麼你當然可以在你的實現中跳過這一步。我將把它留在答案中,作爲暗示下發生的事情的暗示。 –

+0

@ DennisJaheruddin在第一步中不要使用double。雖然它似乎在你的情況下工作,它不漂亮。使用'uint16'代替(因爲MATLAB字符是2位,包含一些Unicode字符'char(300) ')。除此之外,很好的顯示,不需要字符串整數的額外轉換,並且字符串可以是一個16位整數 – patrik

2

最終與

function bin = str2bin(str) 
bin = dec2bin(str, 8); 
bin = bin(:)-'0'; 

function str = bin2str(bin) 
str = char(bin2dec(reshape(char(bin+'0'), [], 8))'); 
相關問題