0
我正在尋找這個二進制翻譯器問題的一些幫助。問題是:在這個練習中,你會寫一個二進制文本翻譯器!Java二進制翻譯器
正如我們所看到的,每個字符都可以用一個8位字符串或一個字節來表示。例如,二進制字符串01000001 具有映射到字符'A'的十進制值65 。
到目前爲止,我有這個,但輸出是:^h CTH * 否)MO
這裏是我的代碼:
public class Scratchpad extends ConsoleProgram
{
public void run()
{
System.out.println(binaryToText("0100100001001001"));
System.out.println(binaryToText("010000110110111101100100011001010100100001010011"));
System.out.println(binaryToText("010011100110100101100011011001010010000001001010011011110110001000100001"));
}
public String binaryToText(String binary)
{
String s2 = "";
char nextChar;
for(int i = 0; i <= binary.length()-8; i += 9) //this is a little tricky. we want [0, 7], [9, 16], etc (increment index by 9 if bytes are space-delimited)
{
nextChar = (char)Integer.parseInt(binary.substring(i, i+8), 2);
s2 += nextChar;
}
return s2;
}
public int binaryToDecimal(String binaryString)
{
int decimal = 0;
int base = 2;
for (int i = binaryString.length() - 1; i >= 0; i--) {
if (binaryString.charAt(i) == '1')
decimal += Math.pow(base,i);
}
return decimal;
}
}
1. 010000012是九位數字的長度。它與問題描述「... 8位字符串...」不匹配。 1.二進制數字不能包含數字'2'。 3. 01000001是十進制數字「65」的二進制表示。這與6510明顯不同。 – DwB
「例如,二進制串010000012的十進制值爲6510」 - (a)二進制串中不能有2(b)8位的範圍從0到255 ,所以規定的十進制值不正確 – ControlAltDel
什麼OP說01000001_2(基數2)等於65_10(基數10)。什麼是預期的輸出? – luk2302