当前位置: 首页 > article >正文

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

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

  • String转换byte[]
    • 文本
    • 16进制字节数组
  • byte[]转换String
    • 文本
    • 16进制
  • 其它

String转换byte[]

文本

将字符串(String)转换为字节(byte)的方法。默认使用的是UTF-8编码
StandardCharsets.UTF_8需要引用import java.nio.charset.StandardCharsets;
StandardCharsets.UTF_8的值是"UTF-8"

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

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

str = stringToBytes(msg);

例如输入msg【0100112233CC】得到结果文本显示【0100112233CC】
如果是十六进制显示是【30 31 30 30 31 31 32 32 33 33 43 43】

16进制字节数组

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

//字符串转字节数组
    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;
        }
    }

使用

String msg="0100112233CC";
byte[] bytes = hexStr2bytes(msg);

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

byte[]转换String

文本

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

String result = new String(bytes);
//String result = new String(bytes, "UTF-8"); 
//String result = new String(bytes, StandardCharsets.UTF_8); 
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进制

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

使用时

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

得到结果 48656C6C6F20576F726C64

其它

字节数组编码/解码在线网站
在这里插入图片描述
在这里插入图片描述

未完待续中

与君共勉!待续
欢迎指错,一起学习


http://www.kler.cn/a/162421.html

相关文章:

  • 小面馆叫号取餐流程 佳易王面馆米线店点餐叫号管理系统操作教程
  • springboot项目中,使用ProGuard 对代码进行混淆
  • Linux相关习题-gcc-gdb-冯诺依曼
  • windows C#-LINQ概述
  • 【Playwright + Python】系列(十)利用 Playwright 完美处理 Dialogs 对话框
  • 43.第二阶段x86游戏实战2-提取游戏里面的lua
  • 朴素贝叶斯 贝叶斯方法
  • Servlet should have a mapping
  • 使用ASIRequest库进行Objective-C网络爬虫示例
  • Mysql自动备份脚本(本地备份、远程备份、删除冗余备份)
  • 记录 | 使用samba将ubuntu文件夹映射到windows实现共享文件夹
  • C语言——2048完整版
  • Kubernetes - 为什么 K8S 在容器里不能调用自己?
  • 制作一个RISC-V的操作系统三-编译与链接
  • 理解 HTTP POST 请求:表单与 JSON 数据格式深入解析20231208
  • JVM的内存结构详解「重点篇」
  • el-form表单校验值为0提示校验不通过
  • 圣诞树网页效果代码详解
  • 应急响应-挖矿病毒处理
  • 【C语言】字符串函数strlen #strcpy #strcmp #strcat #strstr及其模拟实现
  • JS APl关于电梯导航做法(ES6)
  • 正则表达式详细讲解
  • openEuler JDK21 部署 Zookeeper 集群
  • 盘点11月Sui生态发展,了解Sui的近期成长历程!
  • springboot3.0更新后,idea创建springboot2.x项目
  • js写旋转的时钟动态