0 0

JAVA 16进制字符串转byte[],不是一般的转换0

我的需求是把08240A2114140000282B32320000这一串字符串存到数据库,因为数据库的该字段的类型是nvbinary的,无法将nvarchar类型的字符串insert,所以想要转换成byte[],但是一般的字符串转成byte都改变了字符串的显示数据,我转成byte[]数组后存入数据库的值变成了30383234313432313134313430303030323832423332333230303030,这不是我想要的,我想要数据库中显示的也是08240A2114140000282B32320000.
String range = "08240A2114140000282B32320000";
ps.setBytes(1, range.getBytes("UTF-8"));
2013年9月10日 10:54

3个答案 按时间排序 按投票排序

0 0

public static byte[] hexStringToByteArray(String str) {
byte[] byteArray = new byte[str.length()/2];
int len = byteArray.length;
int j = 0;
for (int i = 0; i<len; i++) {
j = (i<<1);
byteArray[i] = 0;
char c = str.charAt(j);
if ('0'<=c && c<='9') {
byteArray[i] |= ((c-'0')<<4);
} else if ('A'<=c && c<='F') {
byteArray[i] |= ((c-'A'+10)<<4);
} else if ('a'<=c && c<='f') {
byteArray[i] |= ((c-'a'+10)<<4);
} else {
// TODO: Exception
}
j++;
c = str.charAt(j);
if ('0'<=c && c<='9') {
byteArray[i] |= (c-'0');
} else if ('A'<=c && c<='F') {
byteArray[i] |= (c-'A'+10);
} else if ('a'<=c && c<='f') {
byteArray[i] |= (c-'a'+10);
} else {

}
}
return byteArray;
}

2013年9月11日 11:50
0 0

我最近正好写了一篇文章,关于这个实现的,楼主可参考下,在我们的项目中已经使用过………………
文章地址:
http://zxmzfbdc.iteye.com/blog/1915912

2013年9月10日 16:04
0 0

如果非要实现你说的效果,要么你把字段的数据类型改了,要么你手动把16进制字符串,按照2位一组,塞到byte数组,然后再存入库中。不过你直接把这个16进制字符串转成byte[]数组放进库中,用的时候再转回来也没什么关系吧

2013年9月10日 13:28

相关推荐

    java16进制与字符串的转换.pdf

    在 Java 中,我们可以使用 `Bytes2HexString` 函数将 byte 数组转换为 16 进制字符串。该函数接受一个参数 b,即 byte 数组,然后将其转换为 16 进制字符串。 ```java public static String Bytes2HexString(byte[]...

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

    在Android开发中,有时我们需要将字节数组(byte array)转换为十六进制字符串,以便于数据存储、传输或调试。这是因为字节数组是二进制数据,而十六进制字符串则是一种人类可读的表示方式。下面我们将详细讨论如何...

    java String 与各种进制字符之间的转换

    - `Integer.toHexString()`和`Integer.parseInt(hexStr, 16)`是十六进制字符串与整数之间转换的常用方法。 4. **字符编码与解码**: Java中的`Character`类提供了处理单个字符的方法。例如,可以使用`Character....

    java16进制与字符串的转换借鉴.pdf

    1. **16进制字符串转字节数组**: - `HexString2Bytes`方法实现了将16进制字符串转换为字节数组。它首先创建一个目标数组,然后遍历输入字符串的每个字符对,将每两个字符视为一个16进制数字,通过`uniteBytes`方法...

    android字符串和16进制转换

    反过来,将16进制字符串转换回ASCII字符串,我们需要将16进制字符串分割成单个字符,然后将它们解析为整数,最后将这些整数转换回相应的字符。这里有一个示例: ```java public String hexToString(String hex) { ...

    java实现十六进制字符unicode与中英文转换示例

    本示例探讨了如何使用Java实现从Unicode十六进制字符串到中英文字符的转换,以及反过来的过程。理解Unicode和UTF之间的关系是至关重要的。 Unicode是一个国际标准,它为世界上几乎所有的字符提供了一个唯一的数字...

    java工具类 string转10进制sacii byte数组再转16进制字符数组再转16进制byte数组 string与BCD互转

    java工具类 : string转10进制sacii byte数组、 10进制sacii byte数组转16进制字符数组、 16进制字符数组转16进制byte数组、 string与BCD互转等方法,包含多个转换方法, 足够满足日常解包组包需求

    java中进制转换(二进制,十进制,十六进制)及字节数组与十六进制的转换

    本篇将详细阐述如何在Java中进行二进制、十进制和十六进制之间的转换,以及字节数组与十六进制字符串的相互转换。 一、进制转换 1. **二进制转十进制**:Java中可以使用`Integer.parseInt()`或`Long.parseLong()`...

    java二进制,字节数组,字符,十六进制,BCD编码转换

    /* java二进制,字节数组,字符,十六进制,BCD编码转换2007-06-07 00:17/** *//** * 把16进制字符串转换成字节数组 * @param hex * @return */

    java 二进制数据与16进制字符串相互转化方法

    Java 二进制数据与 16 进制字符串相互转换方法 Java 中,二进制数据和 16 进制字符串是两种常见的数据表示形式,在实际编程过程中,我们经常需要将这两种格式相互转换。本文将详细介绍 Java 中二进制数据与 16 进制...

    字符串转16进制字节

    这里,`encode('utf-8')`将字符串按照UTF-8编码转换为字节,然后`.hex()`方法将这些字节转换为16进制字符串。 **16进制字节转字符串:** 反之,如果我们有一个16进制字节序列,想要将其还原为字符串,我们需要先将...

    java 字符串转16进制Ascii

    在这个方法中,我们遍历输入字符串中的每个字符,将其转换为对应的ASCII整数值,然后使用`Integer.toHexString()`方法将该整数转换为16进制字符串。最后,我们将结果拼接到一个`StringBuilder`对象中,以空格分隔...

    java socket处理硬件传过来的16进制数据的工具类

    java socket处理硬件传过来的16进制数据的工具类,包含大小端转换、byte[]数组转换为16进制的字符串、byte[]转ByteBuffer、16进制字符串转换为byte数组等

    Java中3DES加密解密示例(封装byte数组16进制互转)

    Java 中的 3DES 加密解密示例(封装 byte 数组和 16 进制字符串互转) 在 Java 中,3DES 加密是一种常用的加密算法,它可以将明文数据转换为密文数据,以保护数据的安全性。在本示例中,我们将展示如何使用 3DES ...

    java-16进制4字节转Float

    2. **解析过程**:将16进制字符串转换为浮点数,通常涉及以下步骤: - 将16进制字符串转换为字节数组,每个字节对应一个16进制字符。 - 根据字节序调整字节数组的顺序。 - 使用`Float.intBitsToFloat()`方法将...

    通过java编程得到.jpg图片16进制的数据

    3. **字节与16进制转换**:Java中的`Integer.toHexString()`方法是将一个整数转换为16进制字符串的关键。由于图片文件由字节组成,我们需要先读取这些字节,然后逐个转换成16进制。 4. **位操作**:如果需要读取....

    把十六进制的位串转化为byte数组

    这个类可能包含一个静态方法,接受一个十六进制字符串作为参数,然后按照上述步骤进行转换,并返回byte数组。在实际开发中,这样的工具类可以大大简化代码,提高可读性和可维护性。 在处理十六进制字符串转字节数组...

    JAVA二进制字节数组字符十六进制BCD编码转换.doc

    - 示例中的`hexStringToByte()`方法将十六进制字符串转换为字节数组,而`bytesToHexString()`则将字节数组转换为十六进制字符串。 2. **字节数组** - 字节数组在Java中用`byte[]`表示,它可以存储任意字节值,常...

    Java实现的进制转换工具类完整示例

    3. 将字节数组转换为十六进制字符串:`public static String encodeHexStr(byte[] data)` 该方法将字节数组转换为十六进制字符串。该方法可以将字节数组转换为小写或大写的十六进制字符串,可以根据需要选择。 4. ...

    Java-byte数组转换成16进制字符串

    Java-byte数组转换成16进制字符串

Global site tag (gtag.js) - Google Analytics