[1252]java byte[] 转string

2023-12-31 08:10:14 浏览数 (2)

JavaScript byte[] 和string 相互转换

byteToString byte[] 格式转字符串
代码语言:javascript复制
/**
 * byte[] 格式转字符串
 * @param {byte[]} arr
 */
function byteToString(arr) {
    if(typeof arr === 'string') {
        return arr;
    }
    var str = '',
        _arr = arr;
    for(var i = 0; i < _arr.length; i  ) {
        var one = _arr[i].toString(2),
            v = one.match(/^1 ?(?=0)/);
        if(v && one.length == 8) {
            var bytesLength = v[0].length;
            var store = _arr[i].toString(2).slice(7 - bytesLength);
            for(var st = 1; st < bytesLength; st  ) {
                store  = _arr[st   i].toString(2).slice(2);
            }
            str  = String.fromCharCode(parseInt(store, 2));
            i  = bytesLength - 1;
        } else {
            str  = String.fromCharCode(_arr[i]);
        }
    }
    return str;
}
stringToByte 字符串格式转byte[]
代码语言:javascript复制
/**
 * stringToByte  字符串格式转byte[] 
 * @param {String} str
 */
function stringToByte(str) {
    var bytes = new Array();
    var len, c;
    len = str.length;
    for (var i = 0; i < len; i  ) {
        c = str.charCodeAt(i);
        if (c >= 0x010000 && c <= 0x10FFFF) {
            bytes.push(((c >> 18) & 0x07) | 0xF0);
            bytes.push(((c >> 12) & 0x3F) | 0x80);
            bytes.push(((c >> 6) & 0x3F) | 0x80);
            bytes.push((c & 0x3F) | 0x80);
        } else if (c >= 0x000800 && c <= 0x00FFFF) {
            bytes.push(((c >> 12) & 0x0F) | 0xE0);
            bytes.push(((c >> 6) & 0x3F) | 0x80);
            bytes.push((c & 0x3F) | 0x80);
        } else if (c >= 0x000080 && c <= 0x0007FF) {
            bytes.push(((c >> 6) & 0x1F) | 0xC0);
            bytes.push((c & 0x3F) | 0x80);
        } else {
            bytes.push(c & 0xFF);
        }
    }
    return bytes;
}

Java byte[] 转string

有以下几种不同的方法可以将Java的byte数组转换为字符串:

方法一:使用String类的构造函数
代码语言:javascript复制
byte[] byteArray = {65, 66, 67, 68};
String str = new String(byteArray);
代码语言:javascript复制
//Original String
String string = "hello world";
 
//Convert to byte[]
byte[] bytes = string.getBytes();
 
//Convert back to String
String s = new String(bytes);
 
//Check converted string against original String
System.out.println("Decoded String : "   s);

这种方式使用平台默认字符集

方法二:使用String类的静态方法valueOf()
代码语言:javascript复制
byte[] byteArray = {65, 66, 67, 68};
String str = String.valueOf(byteArray);
方法三:使用Base64编码

Java 8 开始可以使用Base64类

代码语言:javascript复制
import java.util.Base64;
 
byte[] byteArray = {65, 66, 67, 68};
String str = Base64.getEncoder().encodeToString(byteArray);
代码语言:javascript复制
//Original byte[]
byte[] bytes = "hello world".getBytes();
 
//Base64 Encoded
String encoded = Base64.getEncoder().encodeToString(bytes);
 
//Base64 Decoded
byte[] decoded = Base64.getDecoder().decode(encoded);
 
//Verify original content
System.out.println( new String(decoded) );
方法四:使用Apache Commons Codec库的Hex类
代码语言:javascript复制
import org.apache.commons.codec.binary.Hex;
 
byte[] byteArray = {65, 66, 67, 68};
String str = Hex.encodeHexString(byteArray);

这些方法在将byte数组转换为字符串时可能会有一些差异,具体选择哪种方法取决于具体的需求和环境。

参考:https://www.jianshu.com/p/2a9e82f48540 https://blog.csdn.net/ximaiyao1984/article/details/130954088

0 人点赞