java - 将字符串转换为二进制 [Java]

标签 java string binary

假设我有以下字符串:

String s = "Hello, stackoverflow"

我如何将其转换为二进制数(0 和 1)?诀窍是:我不允许使用内置方法进行转换。它必须用数学方法来完成。我不知道从哪里开始。谁能指出我正确的方向?

编辑 1:我看过这个 question人们建议使用 getBytes(string)、字符集 UTF-8 和 Integer.toBinaryString。我不允许使用这些方法中的任何一种进行转换。我也没听说过 36 基。

最佳答案

这似乎有点不公平,因为我们不能使用:

byte[] b = s.getBytes();

这是您问题的最短解决方案,但由于您不应该使用它,因此这里有一个不好的方法:

使用 String#charAt(int) :

String s = "Hello, stackoverflow";
StringBuilder buf = new StringBuilder();
for (int i = 0; i < s.length(); i++ ) {
    int characterASCII = s.charAt(i);
    // Automatic type casting as 'char' is a type of 'int'
    buf.append(Integer.toBinaryString(characterASCII));
    // or:
    // buf.append(characterASCII, 2);
    // or - custom method:
    // buf.append(toBinary(characterASCII));
}
System.out.println("answer : " + buf.toString());

如果你决定使用 toBinary(int) 方法,这里是:

public static final String toBinary (int num) {
    char[] buf = new char[32];
    int charPos = 32;
    do {
        buf[--charPos] = i & 1;
        i >>>= 1;
    } while (i != 0);
    return new String(buf);
}

或者,如果连这都不允许,你最好自己制定解决方案。 :-)

关于java - 将字符串转换为二进制 [Java],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22753781/

相关文章:

asp.net - 强制ASP.NET应用程序从bin而不是从GAC加载程序集

c++ - 有没有一种方法可以更有效地将二进制 double 从文件读取到 float 数组中?

matlab - 如何在 MATLAB 中实现普查变换

java - Mac OS X 10.5 上的 SWT 和 Java WebStart

java - Android 上的 Integer.parseInt 和 NumberFormatException

java - Docker 或 Vagrant 是否有助于为我们的企业产品创建测试机

c# - 字符串如何在 C# 中终止?

C:获取两个字符串之间包含空格的字符串

java - 维护第三方Java库依赖项的补丁

python - Str split 并爆炸