【问题标题】:Converting text to binary in java在java中将文本转换为二进制
【发布时间】:2016-07-31 18:26:12
【问题描述】:

我想将字符串的每个字符转换为新的二进制字符串。这是我的工作:

public static void main(String args[]) {
    String MESSAGE = "%";
    String binaryResult = "";
    for (char c : MESSAGE.toCharArray()){
        binaryResult += Integer.toBinaryString( (int) c);
    }
    System.err.println(binaryResult);
}

例如输入:“%”,我得到以下输出:“100101” 我的问题是前面的“0”被删除了...... 我想要:“0100101”。有人有想法吗?

【问题讨论】:

  • 请更清楚一点——为什么你需要有一个前导0?在二进制中,01001 等价于 1001。您的程序应该如何确定何时添加 0?应该总是 7 位数字吗?
  • this 你在找什么吗?
  • 其实没有,因为我不想指定位数。如果有的话,我只想拥有前导 0。
  • 你需要更清楚。给出一个示例输入和输出。描述你需要什么。默认情况下,二进制数没有前导数字 - 这就像我们尝试解析一个整数并将其设为 00034 而不是 34。在什么情况下需要用 0 填充结果?
  • 对不起,我忘了说明我需要 7 位表示

标签: java binary


【解决方案1】:

您真正想说的是“如何将我的二进制字符串表示形式填充到 7 位”?

替换这一行:

binaryResult += Integer.toBinaryString( (int) c);

有了这些:

String binString = Integer.toBinaryString( (int) c );
binaryResult += ("0000000" + binString).substring(binString.length());

这假定您只有 7 位字符...如果您需要更多,则将 0 添加到“00000”字符串以匹配您想要的字符串长度(带有填充的 0)。

【讨论】:

  • 是的,这是我的目标!我没有说清楚...但是对于字符“%”,您的 binString var 的长度将是 6 而不是 7 no ?
  • 我的意思是,MAX 为 7 位。试用代码,看看它是否适合您。在这种情况下,该子字符串调用表示在 char 6 处开始......这导致字符串中有 7 个字符。
【解决方案2】:

我建议对您现有的代码进行一些更改。因为,您在循环内连接到一个字符串,这将导致创建一堆新的字符串对象,因为它们是不可变的。这个问题可以通过使用StringBuilder来解决。

public static void main(String args[]) {
    String MESSAGE = "%";
    StringBuilder binaryResult = new StringBuilder();
    for (char c : MESSAGE.toCharArray()) {
        StringBuilder curValue = new StringBuilder(Integer.toBinaryString((int)c));

        // calculate padding 0 bits to fill to 8 bits
        int paddingLength = 8 - curValue.length();
        char[] paddingArr = new char[paddingLength];
        Arrays.fill(paddingArr, '0');

        // insert padding bytes to the front
        curValue.insert(0, paddingArr);

        // add to stringbuilder for `MESSAGE`
        binaryResult.append(curValue);
    }
    System.err.println(binaryResult.toString());
}

【讨论】:

  • 如果由于某种原因,您要包含需要 8 位或 7 位或其他内容的内容,我认为不难找到您必须更改的 8 . :)
  • 感谢您的帮助好友 :)
猜你喜欢
  • 2012-05-04
  • 2012-10-09
  • 2015-06-02
  • 2011-07-09
  • 1970-01-01
  • 1970-01-01
  • 2013-08-20
  • 1970-01-01
  • 2013-01-24
相关资源
最近更新 更多