我是这个领域的新手,正在研究支付网关,请告诉我 iso8583 消息中使用的打包和解包二进制数据有什么区别......!
问问题
5753 次
1 回答
2
ISO8583 的架构定义文件可在http://dfdlschemas.github.io/ISO8583 获得。里面ISO8583_1993.xsd
说:
* This DFDL schema provides a DFDL model for ISO8583 1993 binary data
* where each bitmap in the message is encoded as 8 bytes of binary data
* (8 bits per byte). The bitmaps are said to be 'packed'.
因此,术语“打包”是指位图,可以打包或解包。
在en.wikipedia.org/wiki/ISO_8583#Bitmaps中,它说
位图可以作为 8 个字节的二进制数据或 16 个十六进制 > 字符 0-9、ASCII 或 EBCDIC 字符集中的 AF 传输。
在数据结构中,打包的二进制数据通常意味着更多(如果不是全部可用)位组合用于对某些值进行编码,而解包意味着某些位组合保持未使用,以提高可读性或使某些计算更容易(但解包数据占用更多空间)。
例如,一个无符号byte
(8 位)可以编码从 0 到 255 的数字。如果数字是 BCD 编码的,则只能表示从 0 到 99 的数字,并且某些位组合仍然未使用。但是,在某些情况下,基于 BCD 编码的数字进行计算比基于二进制编码的数字更容易。
总之,ISO 8583 定义了两种不同的编码:
- 打包为 8 字节的二进制数据
- unpacked 是 16 个字节的十六进制字符(在两种不同的编码中,但这是另一方面)。
一个明显的区别是,当您将此数据转储到控制台时,您可以立即将解压后的数据读取为十六进制数字,而二进制编码只会打印一些垃圾字符,具体取决于您的控制台、您的语言环境和您拥有的字体安装。
于 2016-06-24T11:44:19.123 回答