将字节数组转换为字符串,转换后字符串无法转换回来

时间:2013-11-20 09:13:08

标签: java android string bytearray converter

相同的代码:

public byte[] stringToBytesUTFCustom(String str) {
    char[] buffer1 = str.toCharArray();
    byte[] b = new byte[buffer1.length << 1];
    for(int i = 0; i < buffer1.length; i++) {
        int bpos = i << 1;
        b[bpos] = (byte) ((buffer1[i]&0xFF00)>>8);
        b[bpos + 1] = (byte) (buffer1[i]&0x00FF);
    }
    return b;
}
public String bytesToStringUTFCustom(byte[] bytes) {
    char[] buffer = new char[bytes.length >> 1];
    for(int i = 0; i < buffer.length; i++) {
        int bpos = i << 1;
        char c = (char)(((bytes[bpos]&0x00FF)<<8) + (bytes[bpos+1]&0x00FF));
        buffer[i] = c;
    }
    String txt = String.valueOf(buffer);
    //return new String(buffer);
    return txt;
}

首先,我实现了一个SMS加密应用程序(客户端到客户端),然后想要将密码(格式“Byte []”)编码为字符串,Base64它的工作却无法发送,因为超过160个字符。 我想将字节数组转换为字符串,当使用上面的函数时,它的功能相同,但是当我使用bytesToStringUTFCustom然后发送此文本(SMS)时无法正常工作。 Receiver无法读取要解码的文本。

Cipher是bytesToStringUTFCustom函数的结果,所以任何人都可以帮助我? 感谢。

1 个答案:

答案 0 :(得分:3)

你知道吗:

您可以使用Charset.forName(String)来获取Charset。

Charset UTF8 = Charset.forName("UTF-8");
byte[] bytes = str.getBytes(UTF8);
String reverted = new String(bytes, UTF8);