java中的二进制输出的字符串
-
09-10-2019 - |
题
我想从字符串中获取二进制(011001 ..),但是我得到[B@addbf1,都必须有一个简单的转换才能执行此操作,但我看不到它。
public static String toBin(String info){
byte[] infoBin = null;
try {
infoBin = info.getBytes( "UTF-8" );
System.out.println("infoBin: "+infoBin);
}
catch (Exception e){
System.out.println(e.toString());
}
return infoBin.toString();
}
在这里我得到Infobin:[B@addbf1
我想要Infobin:01001 ...
任何帮助将不胜感激,谢谢!
解决方案
只有整数有一种方法可以转换为二进制字符串表示形式,请检查以下内容:
import java.io.UnsupportedEncodingException;
public class TestBin {
public static void main(String[] args) throws UnsupportedEncodingException {
byte[] infoBin = null;
infoBin = "this is plain text".getBytes("UTF-8");
for (byte b : infoBin) {
System.out.println("c:" + (char) b + "-> "
+ Integer.toBinaryString(b));
}
}
}
会打印:
c:t-> 1110100
c:h-> 1101000
c:i-> 1101001
c:s-> 1110011
c: -> 100000
c:i-> 1101001
c:s-> 1110011
c: -> 100000
c:p-> 1110000
c:l-> 1101100
c:a-> 1100001
c:i-> 1101001
c:n-> 1101110
c: -> 100000
c:t-> 1110100
c:e-> 1100101
c:x-> 1111000
c:t-> 1110100
填充:
String bin = Integer.toBinaryString(b);
if ( bin.length() < 8 )
bin = "0" + bin;
其他提示
阵列没有明智的 toString
覆盖,因此他们使用默认对象表示法。
将您的最后一行更改为
return Arrays.toString(infoBin);
您将获得预期的输出。
当您尝试使用时 +
使用字符串上下文中的对象,Java编译器默默地插入了对ToString()方法的调用。
换句话说,您的陈述看起来像
System.out.println("infobin: " + infoBin.toString())
在这种情况下,这是从对象继承的一个。
您将需要使用for-loop从字节数组中挑选每个字节。
不隶属于 StackOverflow