2013-04-02 43 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

相关问题