字符串到字节数组类型转换[重复]

Posted

技术标签:

【中文标题】字符串到字节数组类型转换[重复]【英文标题】:String to byte array type conversion [duplicate] 【发布时间】:2014-08-30 15:31:10 【问题描述】:

我想将字符串转换为字节数组,如下所示:

如果我有一个字符串:

String str = "0x61";

我希望它是:

byte[] byteArray = 0x61;

有什么想法吗?

【问题讨论】:

开头的“0x”是强制性的吗? 【参考方案1】:

您是否在此处遗漏了部分信息?你描述的问题可以用一个简单的

byte[] byteArray = Byte.decode(str);

【讨论】:

【参考方案2】:

如果我理解你的问题,那么你可以这样做 -

String str = "0x61";
byte[] arr = new byte[] (byte) Integer.parseInt(str.substring(2), 16);
System.out.println(arr[0] == 0x61);

输出是

true

【讨论】:

【参考方案3】:

我真的不知道你想要达到什么目的。你能详细说明你的用例吗?

我相信你想要的是

str.getBytes();

看这里https://***.com/a/18571348/2163130

【讨论】:

【参考方案4】:

如果您的字符串在每个数字前没有 0x,那么此方法将执行转换:

private byte[] generateByteArray(String byteArrayStr)
    
        byte[] result = new byte[byteArrayStr.length() / 2];
        for (int i = 0; i < byteArrayStr.length(); i += 2)
               
            result[i / 2] = (byte)((Character.digit(byteArrayStr.charAt(i), 16) << 4) + Character.digit(byteArrayStr.charAt(i + 1), 16));               
        

        return result;
    

此方法会将 "FF00" 转换为 255, 0

您需要确保字符串的长度是偶数,因为每 2 位数字将构成 1 个字节(十六进制格式)。

【讨论】:

【参考方案5】:

步骤 1) 将十六进制转换为长整数 步骤 2) 将 long 转换为字节数组。

String str = "0x61";    
long l = Long.valueOf(str).longValue(); //step 1
byte[] bytes = ByteBuffer.allocate(8).putLong(l).array(); //step 2

【讨论】:

以上是关于字符串到字节数组类型转换[重复]的主要内容,如果未能解决你的问题,请参考以下文章

常用类型转换方法工具类

字节数组到十六进制字符数组的转换[重复]

整理类型转换

将范围为 -128 到 127 的字节数组转换为字符串数组

字节数组到字符串和向后转换

如何在Go中将字节数组转换为字符串[重复]