【发布时间】:2015-07-10 02:48:26
【问题描述】:
我最近接受了一次采访,发现我忘记了一些基础知识。我一直在玩,并编写了一个函数,它将接受一个二进制字符串(还没有验证)并返回所述字符串的 ascii 表示。
我正在寻找有关如何改进它的建议或提示。我不想使用任何 API 函数,这更像是一个游乐场场景,我或许可以从中学到一些东西。
感谢您的帮助。
样本输出:
01101000 01100101 01101100 01101100 01101111
104
101
108
108
111
hello
public static String convertBinaryStringToString(String string){
StringBuilder sb = new StringBuilder();
char[] chars = string.replaceAll("\\s", "").toCharArray();
int [] mapping = {1,2,4,8,16,32,64,128};
for (int j = 0; j < chars.length; j+=8) {
int idx = 0;
int sum = 0;
for (int i = 7; i>= 0; i--) {
if (chars[i+j] == '1') {
sum += mapping[idx];
}
idx++;
}
System.out.println(sum);//debug
sb.append(Character.toChars(sum));
}
return sb.toString();
}
【问题讨论】:
-
而且你不想使用 Integer.parseInt("10001001",2); ?
-
我没有足够的经验在这里说一种或另一种方式(我不是 100% 确定 CR 需要多少代码)......但我认为可以暂时在这两个地方发帖。我的理由是,既然您希望改进工作代码,那么 CR 应该没问题。
-
@Trobbins,谢谢,我会在其他网站上发帖,一旦有事情发生,我会删除其中一个。 :)
-
类似的帖子 [这里][1] 有多种答案和方法。 [1]:stackoverflow.com/questions/4211705/binary-to-text-in-java
-
@SteveGreen “我不想使用 API 函数。”你不是用
Character.toChars做的吗?
标签: java algorithm binary ascii