首先,请不要标记为重复的,因为我知道另一个SO帖子不能解决我的问题..谢谢。将二进制字符串转换为文本字符串
我有一个String
变量称为M
包含二进制值:
0001101 0010110 0011101 0001110 0010100 0010101 0010001 0001000 0000110 0000110 0001100 0001101 0011010 0011100 0010101 0001110 0011010 0011110 0001100 0000110 0011000 0001011 0001101 0000111 0011110 0001010 0001000 0010001 0000111 0011100 0001100 0001001 0010001 0001000 0010010 0001100 0001100 0011001 0010111 0001100 0010111 0000111 0001011 0010110 0010011 0011110 0010000 0010001 0010110 0010011 0011110 0001011 0010110 0000110 0001101 0011010 0011101 0001111 0000111 0000111 0011010 0011100 0001101 0011100 0011001 0011001 0011001 0011101 0011010 0010001 0010011 0010001 0011110 0010111 0001111 0001001 0010101 0011011 0001110 0001011 0011110 0011101 0000110 0011000 0000110 0010101 0001100 0001110 0010100 0011001 0011000 0001100 0001100 0001000 0011000 0001111 0001001 0011100 0011010 0011110 0010110 0011001 0011101 0001110 0010101 0011010 0000111 0010101 0010011 0000101 0010010 0001011 0011110 0001110 0011101 0010001 0001010 0011010 0010110 0011011 0011001 0011000 0010000 0010111 0001100 0010101 0001000 0000101 0000101 0011101 0001100 0010001 0011001 0001110 0001000 0001100 0010101 0001011 0001000 0010000 0001000 0001111 0010101 0001100 0001010 0001111 0011010 0010010 0010010 0011100 0011001 0011001 0010111 0001100 0010010 0000111 0000110 0011001 0001011 0011011 0001101 0011000 0011001 0010000 0000101 0000111 0010111 0000101 0011101 0000111 0010101 0011110 0001101 0011001 0001110 0011100 0001100 0011010 0010010 0011101 0000110 0001111 0011101 0010111 0010110 0011000 0010000 0001000 0001001 0011110 0010111 0001110 0000101 0001010 0001011 0001011 0011001 0011010 0010110 0010101 0001010 0001111 0001100 0011110 0001010 0010011 0011000 0000111 0010011 0001000 0010011 0011110 0011100 0001010 0011000 0011100 0011100 0010110 0011100 0010000 0011110 0001000 0011000 0000110 0001100 0001010 0011010 0011010 0000110 0010000 0001111 0010110 0001010 0010010 0010100 0011101 0011101 0011010 0001101 0011100 0001000 0011011 0010001 0010101 0010000 0010000 0010111 0001001 0011011 0011100 0001100 0010110 0001110 0001100 0011101 0011011
相应的文本等效为:
ribqkjnwyysrecjqeasygtrxauwnxcsvnwmssfhshxtilaonilatiyrebpxxecrcfffbenlnahpvjdqtabygyjsqkfgsswgpvceaifbqjexjlzmtaqbnueidfgohsjwzzbsnfqwsjtwowpjsupemmcffhsmxyftdrgfozxhzbxjarfqcsembypbhigowvahqzuttfeijupsaulgxlwlacugccicoawgysueeyopiumkbbercwdnjoohvdcsiqsbd
我想给String
变量M从二进制转换为文本。在我的理解为主,而对其他SO帖子阅读,我编写了以下内容:
int charCode = Integer.parseInt(M.trim(), 2);
String str = new Character((char)charCode).toString();
其中M
是包含上面我之前讨论过的二进制值String
,并str
应该是相应的文本相当于你往上看。
不过,我收到以下错误:
Exception in thread "main" java.lang.NumberFormatException: For input string: "0001101 0010110 0011101 0001110 0010100 0010101 0010001 0001000 0000110 0000110 0001100 0001101 0011010 0011100 0010101 0001110 0011010 0011110 0001100 0000110 0011000 0001011 0001101 0000111 0011110 0001010 0001000 0010001 0000111 0011100 0001100 0001001 0010001 0001000 0010010 0001100 0001100 0011001 0010111 0001100 0010111 0000111 0001011 0010110 0010011 0011110 0010000 0010001 0010110 0010011 0011110 0001011 0010110 0000110 0001101 0011010 0011101 0001111 0000111 0000111 0011010 0011100 0001101 0011100 0011001 0011001 0011001 0011101 0011010 0010001 0010011 0010001 0011110 0010111 0001111 0001001 0010101 0011011 0001110 0001011 0011110 0011101 0000110 0011000 0000110 0010101 0001100 0001110 0010100 0011001 0011000 0001100 0001100 0001000 0011000 0001111 0001001 0011100 0011010 0011110 0010110 0011001 0011101 0001110 0010101 0011010 0000111 0010101 0010011 0000101 0010010 0001011 0011110 0001110 0011101 0010001 0001010 0011010 0010110 0011011 0011001 0011000 0010000 0010111 0001100 0010101 0001000 0000101 0000101 0011101 0001100 0010001 0011001 0001110 0001000 0001100 0010101 0001011 0001000 0010000 0001000 0001111 0010101 0001100 0001010 0001111 0011010 0010010 0010010 0011100 0011001 0011001 0010111 0001100 0010010 0000111 0000110 0011001 0001011 0011011 0001101 0011000 0011001 0010000 0000101 0000111 0010111 0000101 0011101 0000111 0010101 0011110 0001101 0011001 0001110 0011100 0001100 0011010 0010010 0011101 0000110 0001111 0011101 0010111 0010110 0011000 0010000 0001000 0001001 0011110 0010111 0001110 0000101 0001010 0001011 0001011 0011001 0011010 0010110 0010101 0001010 0001111 0001100 0011110 0001010 0010011 0011000 0000111 0010011 0001000 0010011 0011110 0011100 0001010 0011000 0011100 0011100 0010110 0011100 0010000 0011110 0001000 0011000 0000110 0001100 0001010 0011010 0011010 0000110 0010000 0001111 0010110 0001010 0010010 0010100 0011101 0011101 0011010 0001101 0011100 0001000 0011011 0010001 0010101 0010000 0010000 0010111 0001001 0011011 0011100 0001100 0010110 0001110 0001100 0011101 0011011"
我研究这个错误,然后加入trim
方法以为它会删除任何尾随空格,但没有解决不了的错误。
String
值是否过大?有关为什么以及如何纠正这个问题的任何建议,我们都很感激。
UPDATE: 此外有关错误的详细信息:
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at CaesarCipher.decrypt(C.java:194)
* 194线是:
int charCode = Integer.parseInt(M.trim(), 2);
更新#2:(我改变result
到result1
) 考虑,
String result1 = "";
for(String binNum: M.trim().split(" ")){
int charCode = Integer.parseInt(binNum, 2);
result1+=Character.toString(charCode);
}
System.out.println(result1);
错误是:
error: incompatible types: possible lossy conversion from int to char
result1+=Character.toString(charCode);
更新#3:
错误校正,但我接收到字符串:
mv}ntuqhfflmz|unz~lfxkmg~jhqg|liqhrllywlwgkvs~pqvs~kvfmz}oggz|m|yyy}zqsq~woiu{nk~}fxfulntyxllhxoi|z~vy}nuzguserk~n}qjzv{yxpwluhee}lqynhlukhphouljozrr|yywlrgfyk{mxypegwe}gu~myn|lzr}fo}wvxphi~wnejkkyzvujol~jsxgshs~|jx||v|p~hxfljzzfpovjrt}}zm|h{quppwi{|lvnl}{
当我应该接收所述串:
ribqkjnwyysrecjqeasygtrxauwnxcsvnwmssfhshxtilaonilatiyrebpxxecrcfffbenlnahpvjdqtabygyjsqkfgsswgpvceaifbqjexjlzmtaqbnueidfgohsjwzzbsnfqwsjtwowpjsupemmcffhsmxyftdrgfozxhzbxjarfqcsembypbhigowvahqzuttfeijupsaulgxlwlacugccicoawgysueeyopiumkbbercwdnjoohvdcsiqsbd
UPDATE#4 :
当removi ng 96,我收到以下内容:
实际上有一个字符串没有限制。您的字符串非常短,与业务中使用的字符相比较。请提供您的错误的详细信息。 –
尝试通过空格分割输入字符串并处理每个部分。 –
@NikolasCharalambidis好的。请参阅我的更新,提供有关错误的所有详细信息。 – SamSmith