【问题标题】:How to convert stringified binary (a string of "1"s and "0") to a corresponding char string如何将字符串化二进制(“1”和“0”的字符串)转换为相应的字符字符串
【发布时间】:2013-03-24 00:13:53
【问题描述】:

给定一个字符串化的二进制表示,我想将它转换回真正的二进制,这将被视为字符。例如,字符串 01000001 01000010 01000011 01000001 应转换为“ABCA”,因为 'A' 的 ASCII 为 65,即二进制 01000001,以此类推。

反方向转换函数如下:

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 代码”),但似乎没有任何效果。有谁知道我该怎么做?

【问题讨论】:

  • 您应该发布您尝试用于所需转换的代码,而不是发布可以正常工作的代码。
  • @joeframbach:我怀疑,OP 不是在谈论二进制数据,而是在谈论像“11100101011”这样的字符串。所以这并不是真正的骗局。这实际上应该被转换成什么我真的不明白......
  • 不,它接受一个字符串并以这种经过修饰的二进制格式输出它,其中输出字符串仅包含字符 10 代表二进制 10 在该位
  • @Richard J. Ross III:我将其标记为 C,考虑到这类似于 C:我认为它会很有趣。

标签: c string binary arduino ascii


【解决方案1】:

我认为这应该可行,但老实说,我还没有测试过:

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;
}

【讨论】:

  • 这似乎行不通,Hello World = 1001000 1100101 1101100 1101100 1101111 100000 1010111 1101111 1110010 1101100 1100100 = ÊØØÞÞpan½É,谢谢您的解释...
  • 我认为一开始就有这个例子会很有帮助。无论如何,我调整了代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-02
  • 1970-01-01
  • 1970-01-01
  • 2021-05-09
  • 2016-01-01
  • 2014-06-14
  • 1970-01-01
相关资源
最近更新 更多