从字节到字符串的转换

时间:2013-12-20 04:47:08

标签: java

我想将字符串转换为字节,然后再将字符串转换为字符串,如此

string -> byte -> string

示例qwerty -> [B@274b8c21 (byte) -> [B@274b8c21 (string) -> qwerty

我无法进入最后阶段:

这里是我的代码:

public class Converter {
    public static void main(String []args) throws UnsupportedEncodingException{

        Scanner scan = new Scanner(System.in);

        System.out.println("Enter word:");
        String text = scan.nextLine();

        byte[] array = text.getBytes();
        String newStr = array.toString();

        String str = new String(array, "UTF-8");

        String newStr2 = array.toString();

        System.out.println("Representation in Byte:     " + array);
        System.out.println("Byte to String:     " + str);
        System.out.println("New Str2:   " + newStr2);


       byte [] newByte = newStr2.getBytes();
        System.out.println("New Byte" + newByte);

        String str2 = new String(newByte, "UTF-8");
        System.out.println(str2);
    }
}

5 个答案:

答案 0 :(得分:0)

尝试此new String (bytearray,charset)转换为byte to String

 System.out.println("New Byte" + new String(newByte),"UTF-8";

答案 1 :(得分:0)

String newStr2 = array.toString();

这不会从byte[]创建新的字符串,而是提供byte[]数组的字符串表示。

byte[]创建新字符串的正确方法是

String newStr2 =new String(array, "UTF-8");

这似乎已经在这一行String str = new String(array, "UTF-8");中完成了。这是从给定byte[]创建新String的正确方法。

答案 2 :(得分:0)

您确定使用UTF-8作为字符编码吗?如果没有尝试使用默认值。

 String s = new String(newByte);
    System.out.println("Text Decryted : " + s);

答案 3 :(得分:0)

String newStr = array.toString();它不会显示原始字符串,而是显示字节值

String str = "Stackoverflow";
byte[] byt = str.getBytes();

System.out.println("String : " + str);
System.out.println("String in Byte Fromat: " + byt.toString());
System.out.println("String to Byte: " + byt);

String s = new String(byt);
System.out.println("Byte to String : " + s);

答案 4 :(得分:0)

Java不支持直接打印 byte Array 的方法。

因此,您可以将加密的数组转换为String&在editText2上打印,如下所示

Scanner scan = new Scanner(System.in);

    System.out.println("Enter word:");
    String editText1 = scan.nextLine();

    byte[] array = editText1.getBytes();
    /*
     *  do Your Encryption Here
     */
    String editText2 = new String(array);
    System.out.println(editText2);

或者如果你真的想要打印你可以做的字节,如下所示

Scanner scan = new Scanner(System.in);

    System.out.println("Enter word:");
    String editText1 = scan.nextLine();

    byte[] array = editText1.getBytes();
    /*
     *  do Your Encryption Here
     */
    String editText2 = "[";
    for (byte b : array) {
        editText2 += (" " + b + ",");
    }
    editText2 += "]";
    System.out.println(editText2);

打印array.toString()始终将参考提供给字节数组