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"

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

其它

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

未完待续中

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

相关推荐

  1. Python3 笔记:字符串 encode() bytes.decode()

    2023-12-08 08:34:05       30 阅读
  2. AndroidStudio

    2023-12-08 08:34:05       63 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-08 08:34:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-08 08:34:05       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-08 08:34:05       82 阅读
  4. Python语言-面向对象

    2023-12-08 08:34:05       91 阅读

热门阅读

  1. 怎样学习AI编程?

    2023-12-08 08:34:05       60 阅读
  2. [rk3308]源码编译

    2023-12-08 08:34:05       56 阅读
  3. 使用python脚本轻松实现ssh免密登陆配置

    2023-12-08 08:34:05       65 阅读
  4. nginx 一键切换停机维护页面 —— 筑梦之路

    2023-12-08 08:34:05       52 阅读
  5. 生成对抗网络GAN中的潜向量Z是用来做什么的?

    2023-12-08 08:34:05       58 阅读
  6. Docker实战笔记 三 Docker私有库

    2023-12-08 08:34:05       39 阅读
  7. 图表管理功能(前后端实现增删改查)

    2023-12-08 08:34:05       46 阅读