将二进制转换为ascii,ascii-java中的旋转字符串
我对java非常陌生,现在我真的迷路了。我必须首先把二进制文件转换成ascii码。然后,创建ascii的旋转字符串(例如:“2L4R6L”)以获取特定的字母 我还在第一部分,但现在我真的迷路了。我尝试了转换,但当我打印它时,输出为null。你能帮我指出我的错误,帮我解决这个问题吗 以下是我创建的方法:将二进制转换为ascii,ascii-java中的旋转字符串,java,string,binary,rotation,ascii,Java,String,Binary,Rotation,Ascii,我对java非常陌生,现在我真的迷路了。我必须首先把二进制文件转换成ascii码。然后,创建ascii的旋转字符串(例如:“2L4R6L”)以获取特定的字母 我还在第一部分,但现在我真的迷路了。我尝试了转换,但当我打印它时,输出为null。你能帮我指出我的错误,帮我解决这个问题吗 以下是我创建的方法: public void setEncryptedMessage(String encryptedMess){ encryptedMessage = encryptedMess; C
public void setEncryptedMessage(String encryptedMess){
encryptedMessage = encryptedMess;
Cipher cph = new Cipher();
cph.convertBinary(encryptedMessage);
}
public void convertBinary(String encryptedMessage){
StringTokenizer st = new StringTokenizer(encryptedMessage, '#');
int convert = Integer.parseInt(st.nextToken(), 2);
String letter = new Character((char)convert).toString();
encryptedMessage = letter;
}
public String getEncryptedMessage(){
return encryptedMessage;
}
这是主要问题:
public static void main(String[] args){
Cipher cph=new Cipher();
String encryptedMessage="1000001#1001001#1011010#1010000#1000110";
cph.setEncryptedMessage(encryptedMessage);
System.out.println(cph.getEncryptedMessage());
}
去掉您在
setEncryptedMessage
中创建的额外Cipher
对象,这样您就无法将字符串中的二进制文件转换为ascii格式,对吗?这里我找到了解决办法
public static void main(String[] args) {
String encryptedMessage="1000001#1001001#1011010#1010000#1000110"; //BTW one ascii charecter is represented by 8 digits in binary. And here there are 7 digits per charecter...fix that and well moving on...
String filtered= encryptedMessage.replaceAll("#", "");
StringBuilder b = new StringBuilder();
int i = 0;
String rslt= "";
while (i + 8 <= filtered.length()) {
char c = convert(filtered.substring(i, i+8));
i+=8;
b.append(c);
rslt= b.toString();
}
System.out.println(rslt);
}
private static char convert(String bs) {
return (char)Integer.parseInt(bs, 2);
}
publicstaticvoidmain(字符串[]args){
String encryptedMessage=“1000001#1001001#1011010#1010000#1000110”//顺便说一句,一个ascii字符由8位二进制数字表示。这里每个字符有7位数字…解决这个问题,然后继续。。。
字符串筛选=encryptedMessage.replaceAll(“#”,”);
StringBuilder b=新的StringBuilder();
int i=0;
字符串rslt=“”;
而(i+8)