在Java中将字符串(如test123)转换为二进制文件[已关闭]
我希望能够将字符串(带有单词/字母)转换为其他形式,例如二进制。我该怎么做。我正在用BLUEJ(Java)编码。谢谢
我希望能够将字符串(带有单词/字母)转换为其他形式,例如二进制。我该怎么做。我正在用BLUEJ(Java)编码。谢谢
通常的方法是使用来获取底层字节,然后以其他形式(十六进制,二进制等)呈现这些字节。String#getBytes()
请注意,使用默认字符集,因此,如果您希望将字符串转换为某些特定的字符编码,则应使用,但很多时候(特别是在处理ASCII时)就足够了(并且具有不引发已检查异常的优点)。getBytes()
getBytes(String encoding)
getBytes()
对于到二进制的特定转换,下面是一个示例:
String s = "foo";
byte[] bytes = s.getBytes();
StringBuilder binary = new StringBuilder();
for (byte b : bytes)
{
int val = b;
for (int i = 0; i < 8; i++)
{
binary.append((val & 128) == 0 ? 0 : 1);
val <<= 1;
}
binary.append(' ');
}
System.out.println("'" + s + "' to binary: " + binary);
运行此示例将产生:
'foo' to binary: 01100110 01101111 01101111
一个更短的例子
private static final Charset UTF_8 = Charset.forName("UTF-8");
String text = "Hello World!";
byte[] bytes = text.getBytes(UTF_8);
System.out.println("bytes= "+Arrays.toString(bytes));
System.out.println("text again= "+new String(bytes, UTF_8));
指纹
bytes= [72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33]
text again= Hello World!