最近项目中遇到一个问题:
String cardNum = "AC67D978";
,此时要求把cardNum转换为
cardNum = "2027513772"//十六进制0x78D967AC对应的十进制字符串
,考虑了好久,在同事的帮助下终于搞定,
不过并不知道这种方法是不是最佳,
/**
* 将操作员编码替换为消费卡卡号(并转换为10进制)
* @param cardNum 消费卡卡号(8字节)
* @return reStr 返回值
*/
private static String byte2String(String cardNum) {
String reStr = "001";//返回值
try {
if (cardNum.length() < 8) {
throw new Exception("读取POS传送的消费卡卡号不足8位");
}
byte[] bs = cardNum.getBytes();
byte[] b1 = new byte[bs.length];
int[] b2 = new int[bs.length / 2];
for (int i = 0; i < bs.length; i++) {//计算出cardNum中每一个字符对应的十进制
if (bs[i] >= 'A' || bs[i] >= 'a') {
b1[i] = (byte) (bs[i] - 0x30 - 7);
} else {
b1[i] = (byte) (bs[i] - 0x30);
}
}
b2[0] = b1[6] << 4 | (b1[7] & 0x0f);//例:得到120(0x78)
b2[1] = b1[4] << 4 | (b1[5] & 0x0f);//例:得到217(0xD9)
b2[2] = b1[2] << 4 | (b1[3] & 0x0f);//例:得到103(0x67)
b2[3] = b1[0] << 4 | (b1[1] & 0x0f);//例:得到172(0xAC)
reStr = (b2[0] << 24 | b2[1] << 16 | b2[2] << 8 | b2[3]) + "";//得到2027513772(0x78D967AC)
} catch (Exception e) {
logger.error(e.getMessage(), e);
return reStr;
}
return reStr;
}
分享到:
相关推荐
在Java编程语言中,String类是处理文本字符串的核心类,而与各种进制字符之间的转换是常见的编程需求。本文将详细探讨Java中如何进行String与二进制、八进制、十进制以及十六进制之间的转换。 首先,我们要了解进制...
在Java中,我们可以使用`Integer`类的`toHexString`方法,将一个整数的二进制表示转换为十六进制字符串。例如: ```java int binaryNumber = 0b101010; // 二进制数 String hexString = Integer.toHexString(binary...
Java实现的进制转换工具类是Java语言中的一种常用工具类,用于实现各种进制之间的转换操作,如二进制、十六进制、字符串、数组等。该工具类主要提供了将字节数组转换为十六进制字符数组或字符串的方法,以及将字符串...
本文将详细介绍 Java 中的 16 进制与字符串的相互转换函数分类。 将 byte 数组以 16 进制的形式打印到控制台 在 Java 中,我们可以使用 `printHexString` 函数将 byte 数组以 16 进制的形式打印到控制台。该函数...
在Java编程语言中,将字符串转换为16进制ASCII值是一个常见的操作,尤其是在处理数据编码、网络通信或存储时。这个过程涉及到字符到数字的转换,并且通常使用`Character`类和`Integer`类的方法来完成。让我们深入...
本文实例讲述了javascript实现的字符串与十六进制表示字符串相互转换方法。分享给大家供大家参考。具体如下: 之所以写这个,是因为发现SQL注入和XSS中经常利用十六进制表示的字符串,比如 SELECT CONCAT(0x68656c6...
### Java字符串的编码转换 在Java中,处理不同字符集之间的字符串转换是一项常见任务。尤其是在处理国际化应用时,理解并掌握各种字符编码格式变得尤为重要。下面将介绍几种常见的字符编码格式以及如何在Java中实现...
在Java编程语言中,将字符转换为十六进制表示的ASCII码是一项常见的任务,尤其是在处理字符串数据时。本文将深入探讨如何实现这个功能,并通过一个具体的示例代码`StringToAscii.java`进行演示。 首先,我们需要...
例如,将二进制字符串"1011"转换为八进制: ```java String binary = "1011"; int decimal = Integer.parseInt(binary, 2); // 将二进制转换为十进制 String octal = Integer.toOctalString(decimal); // 将十...
在这里,`String.format()`和`BigInteger`用于将字符串转换为16进制,而`Base64.getDecoder().decode()`则用于将16进制字符串解码回原始的字节数组,再转化为字符串。 在实际应用中,你可能还会遇到其他复杂情况,...
一、利用Integer将十进制的数进行进制转换 方法 十进制转换其他进制 使用方法 返回值 10进制转2进制 Integer.toBinaryString(n) 一个二进制字符串 10进制转8进制 Integer.toOctalString(n) 一个八进制字符...
1. **二进制与十六进制转换** - 二进制是一种基于2的计数系统,只包含两个数字:0和1。 - 十六进制是一种基于16的计数系统,由0-9的阿拉伯数字和A-F的字母(代表10-15)组成。 - 在Java中,可以使用`Integer....
本示例探讨了如何使用Java实现从Unicode十六进制字符串到中英文字符的转换,以及反过来的过程。理解Unicode和UTF之间的关系是至关重要的。 Unicode是一个国际标准,它为世界上几乎所有的字符提供了一个唯一的数字...
在Java中,我们可以使用`java.util.HexFormat`类(Java 11及以上版本)或者`java.security.MessageDigest`配合`java.math.BigInteger`来实现十六进制转换。如果你使用的是早期版本的Java,可以自定义方法: ```java...
/* java二进制,字节数组,字符,十六进制,BCD编码转换2007-06-07 00:17/** *//** * 把16进制字符串转换成字节数组 * @param hex * @return */
在编程中,有时我们需要在二进制和字符串之间进行转换,以满足不同场景的需求。`CBinary`类就是为了实现这种转换而设计的。 `CBinary`类可能包含以下功能: 1. **二进制转字符串**:将二进制数据转换为字符串。这...
本项目就是一个基于Java原生SDK编写的进制转换程序,它旨在帮助学习者理解和掌握数据结构的相关概念。 在Java中,进制转换主要涉及到`Integer`和`String`类中的方法。以下是主要涉及的知识点: 1. **字符串到整数...
二进制数组转换为二进制字符串 将二进制数组转换为十六进制字符串 将十六进制转换为二进制字节数组 将十六进制转换为二进制字符串
在计算机编程中,字符串的16进制转10进制是一个常见的字符转换操作,特别是当处理二进制数据或在编程调试过程中遇到16进制数据时。16进制数,也称为十六进制数,是一种逢16进位的数制,使用数字0-9和字母A-F(或小写...
本篇将详细阐述如何在Java中进行二进制、十进制和十六进制之间的转换,以及字节数组与十六进制字符串的相互转换。 一、进制转换 1. **二进制转十进制**:Java中可以使用`Integer.parseInt()`或`Long.parseLong()`...