假设我有以下字符串:
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/