2013-05-26 50 views
0

我正在編寫一個程序,將一個句子編碼成二進制文件,方法是將用戶輸入的每個單獨字符轉換爲二進制數字值,用於表示ASCII中的該字符。我似乎無法想到將字符串轉換爲更好的方法,所以我想知道是否可以將用戶輸入存儲爲字符數組。例如,如果用戶進入世界「Apple」,是否有可能將每個單獨的字母存儲爲字符?是否可以將用戶輸入的單詞存儲爲字符數組?

編輯:我忘了提及,我將二進制數值1010101等字轉換後。我必須把二進制數值變成0和1的隨機字符串,並將其顯示在屏幕上。

+0

聽起來像你只是想索引字符串。 – chris

+0

你是什麼意思? – user2419691

+0

不會'std :: string'或'char []'工作嗎? – 0x499602D2

回答

1

這裏是我的一個老的回答,處理整數轉換爲二進制:How to manipulate and represent binary numbers in C++

大多數情況下,人們寫循環來創建這些字符串每次一個位,但它是一個有點毫無意義(除了是一個鍛鍊在按位操作中)。

std::string StringToBinary(const string & s) 
{ 
    static const char lookup[16][5] = { 
     "0000", "0001", "0010", "0011", 0100", "0101", "0110", "0111", 
     "1000", "1001", "1010", "1011", 1100", "1101", "1110", "1111" 
    }; 

    std::string bin; 
    bin.reserve(s.size()*8); 

    for(i = 0; i < s.size(); i++) { 
     bin.append(lookup[(unsigned char)s[i] >> 4], 4); 
     bin.append(lookup[(unsigned char)s[i] & 0x0f], 4); 
    } 
    return bin; 
} 

這需要高階半字節和(s[i]>>4)和低位:如果你適應上述單字符我的回答,您可以使用代表半個字節查找表手工做的緊湊nybble(s[i]&0x0f)並將其轉換爲4位字符串。如果你願意,你可以使用一個8位查找表,但你想編寫一個小程序來生成代碼(或動態生成它)。

上述解決方案比較容易,不需要大量的按位操作。

相關問題