如何在java中将字符串转换为bcd格式的字节数组?
How to convert a string to byte array in bcd format in java?
我有下一个字符串:
String points = "210987654321";
我需要以 bcd 格式结束 6 字节数组,看起来像这样(相同的数字):
byte [] result = { 0x21, 0x09, (byte) 0x87, 0x65, 0x43, 0x21 };
我怎么去那里? points.getBytes();
没有满足我的需求。
根据您提供的代码及其预期输出,您似乎正在尝试转换成 BCD 格式(BCD 是一个相当通用的定义),通常用于表示一个字符串,其中每个字母代表一个十六进制数字进入其相应的字节表示(从评论到这个答案:"packed BCD")。
Whosebug 中有解决方案,例如:
- Convert a string representation of a hex dump to a byte array using Java?
但是,为了 "not reinventing the wheel",我更喜欢 Apache Commons 或 Google Guava 等库中提供的功能:
- https://commons.apache.org/proper/commons-codec/apidocs/org/apache/commons/codec/binary/Hex.html
- https://guava.dev/releases/16.0/api/docs/com/google/common/io/BaseEncoding.html
对于 Apache Commons,它大致可以归结为以下代码:
byte[] result = Hex.decodeHex(points)
但是需要注意的是,上面的代码将接受包含最大字母 "F" 的字符串作为输入,因此如果您不能接受,您将必须确保您的字符串仅包含数字。
由于 BCD 包含许多变体,我认为值得一提的是,在应用 BCD 转换之前,您应该根据软件的用途确定要应用的特定转换。
例如,在 financial/services 部门,需要转换为 EBCDIC 格式 (http://ascii-table.com/ebcdic-table.php) 以与 IBM 系统交互是很常见的。
在这种情况下,我建议检查以下 Whosebug 问题及其相关答案:
- Convert String from ASCII to EBCDIC in Java?
最后,如果您真的想转换成另一种 BCD 格式,您可能已经根据管理特定 BCD 格式的规则编写了自己的代码。
当然,在开始编码之前,我仍然建议您寻找为您执行转换的库。
我有下一个字符串:
String points = "210987654321";
我需要以 bcd 格式结束 6 字节数组,看起来像这样(相同的数字):
byte [] result = { 0x21, 0x09, (byte) 0x87, 0x65, 0x43, 0x21 };
我怎么去那里? points.getBytes();
没有满足我的需求。
根据您提供的代码及其预期输出,您似乎正在尝试转换成 BCD 格式(BCD 是一个相当通用的定义),通常用于表示一个字符串,其中每个字母代表一个十六进制数字进入其相应的字节表示(从评论到这个答案:"packed BCD")。
Whosebug 中有解决方案,例如:
- Convert a string representation of a hex dump to a byte array using Java?
但是,为了 "not reinventing the wheel",我更喜欢 Apache Commons 或 Google Guava 等库中提供的功能:
- https://commons.apache.org/proper/commons-codec/apidocs/org/apache/commons/codec/binary/Hex.html
- https://guava.dev/releases/16.0/api/docs/com/google/common/io/BaseEncoding.html
对于 Apache Commons,它大致可以归结为以下代码:
byte[] result = Hex.decodeHex(points)
但是需要注意的是,上面的代码将接受包含最大字母 "F" 的字符串作为输入,因此如果您不能接受,您将必须确保您的字符串仅包含数字。
由于 BCD 包含许多变体,我认为值得一提的是,在应用 BCD 转换之前,您应该根据软件的用途确定要应用的特定转换。
例如,在 financial/services 部门,需要转换为 EBCDIC 格式 (http://ascii-table.com/ebcdic-table.php) 以与 IBM 系统交互是很常见的。 在这种情况下,我建议检查以下 Whosebug 问题及其相关答案:
- Convert String from ASCII to EBCDIC in Java?
最后,如果您真的想转换成另一种 BCD 格式,您可能已经根据管理特定 BCD 格式的规则编写了自己的代码。 当然,在开始编码之前,我仍然建议您寻找为您执行转换的库。