2013-04-02 44 views
-1

給定一個字符串化的二進制表示形式,我想將其轉換爲真正的二進制文件,將其視爲字符。例如,字符串01000001 01000010 01000011 01000001應該轉換爲「ABCA」,因爲'A'的ASCII是65,這是二進制01000001,依此類推。如何將字符串化的二進制數(一串「1」和「0」)轉換爲相應的字符串

用於在相反方向轉換的函數如下:

String getBinary(String str) { 
    String message = str; 
    int length = message.length(); 
    String binaryNumber = ""; 

    for(int i = 0; i <= length; i++) { 
     char c = message.charAt(i); 
     binaryNumber = binaryNumber + String(c, BIN) + " "; 
    } 

    return binaryNumber; 
} 

我已經從C++,C和Java嘗試了許多東西(和它轉換爲「Arduino的代碼」),但似乎沒有任何工作。有誰知道我該怎麼做?

+0

你應該張貼代碼,你試圖用你想要的轉換,而不是發佈,沒有任何問題,工作代碼。 – angelatlarge

+0

[C++將二進制數據轉換爲十六進制字符串並返回]的可能的重複(http://stackoverflow.com/questions/7363774/c-converting-binary-data-to-a-hex-string-and-back) –

+1

@joeframbach:OP不是在談論二進制數據,而是關於像「11100101011」這樣的字符串,我懷疑。所以這不是一個騙局。爲什麼這實際上應該被轉換,我真的不知道...... – alk

回答

0

我認爲這應該工作,但是,說實話,我沒有測試它:

String debinaryStringify(String source) { 
    String result = ""; 
    int idxStart = 0; 
    do { 
     char val = 0; 
     for (int i=0; i<8; i++) { 
      val += ((source.charAt(idxStart+i) == '1') << (7-i)); // Trick: Assignment of an evaluation result 
     } 
     result.concat(val); 
     idxStart = source.indexOf(' ') + 1; 
    } while ((idxStart > 0) && (idxStart < source.length() - 7)); 
    return result; 
} 
+1

這似乎沒有工作,你好世界= 1001000 1100101 1101100 1101100 1101111 100000 1010111 1101111 1110010 1101100 1100100 =ÊØØÝݽ±,感謝您的解釋,雖然... – 0101011

+0

這個例子一開始會有幫助,我想。無論如何,我調整了代碼。 – angelatlarge

+1

您的新編輯返回「」(無)... – 0101011

相關問題