方式一:
/** * Convert hex string to byte[] * @param hexString the hex string * @return byte[] */ public static byte[] hexStringToBytes(String hexString) { if (hexString == null || hexString.equals("")) { return null; } if(hexString.length()%2!=0){ throw new RuntimeException("Hex bit string length must be even"); } hexString = hexString.toUpperCase(); int length = hexString.length() / 2; char[] hexChars = hexString.toCharArray(); byte[] d = new byte[length]; for (int i = 0; i < length; i++) { int pos = i * 2; d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1])); } return d; } /** * Convert char to byte * 'F'-->15 * @param c * char * @return byte */ private static byte charToByte(char c) { int index = "0123456789ABCDEF".indexOf(c); if (index == -1) { index = "0123456789abcdef".indexOf(c); } return (byte) index; }
方式二:
// 从十六进制字符串到字节数组转换 public static byte[] hexString2Bytes(String hexstr) { int length=hexstr.length(); if(length%2!=0){ throw new RuntimeException("Hex bit string length must be even"); } byte[] b = new byte[hexstr.length() / 2]; int j = 0; for (int i = 0; i < b.length; i++) { char c0 = hexstr.charAt(j++); char c1 = hexstr.charAt(j++); b[i] = (byte) ((parse(c0) << 4) | parse(c1)); } return b; } private static int parse(char c) { if (c >= 'a') return (c - 'a' + 10) & 0x0f; if (c >= 'A') return (c - 'A' + 10) & 0x0f; return (c - '0') & 0x0f; }
注意:当十六进制位串转化为字节数组时,十六进制位串的位数必须是偶数的,因为两个十六进制位串对应一个字节
相关推荐
由C代码翻译过来的PHP CRC8算法,内有十六进制转字节数组与字节数组转十六进制,内有十六进制转byte数组与byte数组转十六进制
在Android开发中,有时我们需要将字节数组(byte array)转换为十六进制字符串,以便于数据存储、传输或调试。这是因为字节数组是二进制数据,而十六进制字符串则是一种人类可读的表示方式。下面我们将详细讨论如何...
为了将一个字符串转换为十六进制表示,可以先将其编码为字节数组,再将每个字节转换为十六进制形式: ```csharp public static string StringToHexString(string str, Encoding encoding) { byte[] bytes = ...
- **手动转换**:通过遍历16进制字符串,将每个两位16进制数转换为10进制,然后存储到byte数组中。这种方法需要对二进制、16进制和10进制的转换规则有深入理解。 3. **代码实现** 使用`hex`包进行转换的简单示例...
本篇将详细阐述如何在Java中进行二进制、十进制和十六进制之间的转换,以及字节数组与十六进制字符串的相互转换。 一、进制转换 1. **二进制转十进制**:Java中可以使用`Integer.parseInt()`或`Long.parseLong()`...
总结来说,将十六进制字符串转换为byte数组是编程中常见的操作,涉及到的主要知识点包括字符串处理、二进制数据操作以及对不同编程语言的API理解。在实际应用中,我们需要根据具体需求选择合适的方法和工具,以确保...
当两个十六进制字符串进行按位异或运算时,会先将它们转换为二进制形式,然后逐位进行异或操作。异或运算是对两个位进行比较,如果两个位相同,则结果为0;如果两个位不同,则结果为1。 在Java中,我们可以利用`...
byte数组、十进制、十六进制间的两两转换
- 手动解析:遍历字符串中的每个字符,将其视为两位的十六进制数,并转换为对应的十进制值。例如,`'A'`在ASCII码中是65,其对应的十六进制值是41。这需要对字符的ASCII码值和十六进制数有深入的理解。 - 使用`...
-- 转换十六进制字符串为二进制数据 for i = 1, string.len(hexstr) - 1, 2 do local doublebytestr = string.sub(hexstr, i, i+1) local n = tonumber(doublebytestr, 16) if 0 == n then bytesfile:write('\00...
- `bytesToHexString()`方法遍历字节数组,将每个字节转换为十六进制字符串,并确保结果始终为两位。 3. **BCD编码** - BCD编码是一种特殊形式的二进制编码,用于表示十进制数。每个十进制数字用四位二进制表示,...
字符串之间的转化通用,字节数组转化为十六进制字符串,16进制转化为byte数组,十六进制字符串转字符串,将一条十六进制字符串转换为ASCII
如果你需要处理的是二进制数据,例如字节数组,并且想要将其转换为十六进制字符串,你可以遍历数组并将每个字节转换为两位的十六进制字符串,然后连接起来。同样,要将这样的字符串解析回字节数组,你需要对每个两位...
在这里,我们使用`Substring`方法提取每两个字符形成一个字节的十六进制值,然后用`Convert.ToByte`将其转换为字节,最后通过`Encoding.Unicode.GetString`将字节数组解码为字符串。 注意,由于Unicode编码中每个...
在上面的代码中,我们首先将十六进制字符串str转换为Byte数组bytes,然后使用Substring方法将十六进制字符串分割成小块,并将每个小块转换为Byte类型。 反之,如果我们需要将Byte数组转换为十六进制字符串时,我们...
/** * 16进制表示的字符串转换为字节数组 * @param hexString 16进制表示的字符串 * @return byte[] 字节数组 */ public static byte[] hexStringToByteArray(String hexString) { hexString = hexString.replaceAll...
2. **字符串到整型转换**:将十六进制字符串转换为十进制整数。可以使用`int.Parse`或`Convert.ToInt32`方法,但需先添加前缀“0x”以指示基数是16。 3. **整型到浮点数转换**:这一步比较复杂,因为浮点数的二进制...
在C#中,可以使用BitConverter类将字节数组转换为十六进制字符串,反之亦然。 总结来说,C#实现的十六进制AES加解密结合了强大的加密算法和方便的数据表示方式,提供了可靠的数据安全解决方案。`ByteUtil.cs`和`...