有人知道在哪里解释或记录了 PDF417 条形码(CAC 前面)中使用的 EDIPI / CII 压缩方法吗?
我找到的最接近的参考是这个文件:http ://www.cnic.navy.mil/navycni/groups/public/@hq/@cacpmo/documents/document/cnicp_a282327.pdf但它并没有真正解释压缩 -将字符串转换为 base-32 似乎并没有得到相同的结果。
显然是一个非常深奥的问题,但任何帮助将不胜感激。
谢谢!
我遇到了类似的问题,所以我写了这段代码。
Public function base32(stringin as string) as double
ref = "0123456789abcdefghijklmnopqrstuv"
stringin = lcase$(stringin)
x& = 0
if len(stringin) = 0 then base32 = 0: exit function
for n% = len(stringin) to 1 step -1
base& = (32 ^ num)
if base& = 0 then base& = 1
v = instr(1, ref, mid$(stringin, n%, 1)) - 1
if v < 0 then base32 = 0: exit function 'invalid character detection
x& = x& + (v * base&)
num = num + 1
next n%
base32 = x&
end function
public function mildate(stringin as string) as string
mildate = dateadd("d", base32(stringin), "01/01/1000")
end function
我有一份官方 DoD 文件的副本,其中解释了条形码的布局方式,但我相信它位于受限站点上。您和 Matthew 是正确的,压缩涉及将 base-32 数字转换为数字,但只有某些数据元素被压缩,特别是任何可能被视为个人信息(SSN、出生日期等)的数据元素。您最好通过 www.cac.mil 获得一份 CAC 开发人员工具包 (CDK)。