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

其它

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

未完待续中

与君共勉!待续

欢迎指错,一起学习

相关推荐
程序员陆业聪5 小时前
你的 Android App 可能白白损失了 35% 的性能——R8 全模式配置详解
android
棉花骑士7 小时前
【AI Agent】面向 Java 工程师的Claude Code Harness 学习指南
java·开发语言
爱敲代码的小鱼7 小时前
springboot(2)从基础到项目创建:
java·spring boot·spring
张同学038 小时前
220V 转 12V/5V 电源输入电路设计笔记
笔记·嵌入式硬件·硬件工程
深蓝海拓8 小时前
S7-1500PLC学习笔记:MOVE_BLK、MOVE_BLK_VARIANT、BLKMOV的区别
笔记·学习·plc
迈巴赫车主8 小时前
蓝桥杯19724食堂
java·数据结构·算法·职场和发展·蓝桥杯
i220818 Faiz Ul9 小时前
动漫商城|基于springboot + vue动漫商城系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·动漫商城系统
雨浓YN9 小时前
OPC UA 通讯开发笔记 - 基于本地dll文件
windows·笔记
海兰9 小时前
【实战】MCP 服务在 Nacos 中注册状态分析与优化
android·java·github·银行系统·银行ai
bearpping9 小时前
MySQL压缩版安装详细图解
android·mysql·adb