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

其它

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

未完待续中

与君共勉!待续

欢迎指错,一起学习

相关推荐
其美杰布-富贵-李几秒前
Conv1d(一维卷积)深度学习学习笔记
笔记·深度学习·学习
凌冰_几秒前
JAVA与MySQL实现银行管理系统
java·开发语言·mysql
Han.miracle2 分钟前
Spring WebMVC入门实战:从概念到连接建立全解析
java·spring boot·spring·springmvc
Savvy..4 分钟前
RabbitMQ
java·rabbitmq·java-rabbitmq
TT哇4 分钟前
Spring Boot 项目中关于文件上传与访问的配置方案
java·spring boot·后端
撩得Android一次心动6 分钟前
Android 四大组件——Service(服务)【基础篇1】
android·服务·四大组件
峥嵘life7 分钟前
Android16 EDLA 认证测试BTS过程介绍
android·java·linux
残花月伴9 分钟前
天机学堂-day5(互动问答)
java·spring boot·后端
找方案11 分钟前
我的 all-in-rag 学习笔记:初识 RAG—— 让 AI 从 “闭卷考试“ 变 “开卷考“
人工智能·笔记·学习·rag·all-in-rag
搞机械的假程序猿13 分钟前
普中51单片机学习笔记-红外遥控
笔记·学习·51单片机