相同的代码:
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函数的结果,所以任何人都可以帮助我? 感谢。
答案 0 :(得分:3)
你知道吗:
您可以使用Charset.forName(String)
来获取Charset。
Charset UTF8 = Charset.forName("UTF-8");
byte[] bytes = str.getBytes(UTF8);
String reverted = new String(bytes, UTF8);