Android Studio的笔记--String和byte[]

String和byte\[\]的相互转换,字节数组转换

String转换byte\[\]

文本

将字符串(String)转换为字节(byte)的方法。默认使用的是UTF-8编码

StandardCharsets.UTF_8需要引用import java.nio.charset.StandardCharsets;

StandardCharsets.UTF_8的值是"UTF-8"

java 复制代码
public byte[] stringToBytes(String s) {  
    //return s.getBytes(StandardCharsets.UTF_8);
    //return s.getBytes("UTF-8");
    return s.getBytes();  
}

使用时直接调用,例如像串口发送指令,文本转byte时使用。

java 复制代码
str = stringToBytes(msg);

例如输入msg【0100112233CC】得到结果文本显示【0100112233CC】

如果是十六进制显示是【30 31 30 30 31 31 32 32 33 33 43 43】

16进制字节数组

十六进制字节数组字符串转换十六进制字节数组

java 复制代码
//字符串转字节数组
    private byte[] hexStr2bytes(String hex) {
        int len = (hex.length() / 2);
        byte[] result = new byte[len];
        char[] achar = hex.toUpperCase().toCharArray();
        for (int i = 0; i < len; i++) {
            int pos = i * 2;
            result[i] = (byte) (hexChar2byte(achar[pos]) << 4 | hexChar2byte(achar[pos + 1]));
        }
        return result;
    }
//把16进制字符[0123456789abcdef](含大小写)转成字节
    private static int hexChar2byte(char c) {
        switch (c) {
            case '0':
                return 0;
            case '1':
                return 1;
            case '2':
                return 2;
            case '3':
                return 3;
            case '4':
                return 4;
            case '5':
                return 5;
            case '6':
                return 6;
            case '7':
                return 7;
            case '8':
                return 8;
            case '9':
                return 9;
            case 'a':
            case 'A':
                return 10;
            case 'b':
            case 'B':
                return 11;
            case 'c':
            case 'C':
                return 12;
            case 'd':
            case 'D':
                return 13;
            case 'e':
            case 'E':
                return 14;
            case 'f':
            case 'F':
                return 15;
            default:
                return -1;
        }
    }

使用

java 复制代码
String msg="0100112233CC";
byte[] bytes = hexStr2bytes(msg);

例如输入msg【0100112233CC】得到结果十六进制显示【01 00 11 22 33 CC】

byte\[\]转换String

文本

ASCII码

将字节(byte)转换为字符串(String)的方法。默认使用的是UTF-8编码

java 复制代码
String result = new String(bytes);
//String result = new String(bytes, "UTF-8"); 
//String result = new String(bytes, StandardCharsets.UTF_8); 
java 复制代码
byte[] bytes= {72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100};
String result = new String(received, "UTF-8");

得到结果Hello World

例如输入bytes= {72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100};得到结果文本显示【Hello World】,十六进制显示【48 65 6C 6C 6F 20 57 6F 72 6C 64】

16进制

java 复制代码
public static String bytesToHex(byte[] bytes) {
        StringBuilder result = new StringBuilder();
        for (byte b : bytes) {
            result.append(String.format("%02X", b));
        }
        return result.toString();
    }

使用时

java 复制代码
byte[] bytes= {72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100};
String ss=bytesToHex(bytes);

得到结果 48656C6C6F20576F726C64

其它

字节数组编码/解码在线网站

未完待续中

与君共勉!待续

欢迎指错,一起学习

相关推荐
IT枫斗者枫哥39 分钟前
MyBatis一对多分页:LIMIT 20,为什么凑不齐20个订单?
java·数据库
代码方舟39 分钟前
Java数据工程:利用天远全网运营商三要素优化线上实名认证合规体验
java·人工智能
BBmmo40 分钟前
我的 Java 学习笔记 · 第 7 篇:泛型与通配符
java
独泪了无痕40 分钟前
Hutool之RandomUtil:随机数生成的终极利器
java·后端
花开路口41 分钟前
深入理解 Java/Kotlin 协变与逆变
java·kotlin
运行时异常41 分钟前
【WMS 仓储系统集成 AI Agent 实战】第 7 讲:Vue3 前端工程化——Token 刷新锁、Markdown 渲染踩坑与权限体系
java
她的男孩42 分钟前
开放接口限流从 20 改到 200 还是每分钟 20 次:拆完防重放+幂等+限流,我找到 5 个静默失效的坑
java·后端·架构
_祝你今天愉快1 小时前
UI核心 - UI绘制流程及原理
android
天天被压力1 小时前
【Python 量化取数指南 #13】Python 把行情落库:sqlite 一键存,回测随用随取
java·人工智能·python
天天被压力1 小时前
【Python 量化取数指南 #14】Python 清洗行情数据:复权停牌对齐,回测不翻车
java·人工智能·python