【发布时间】:2008-09-11 16:36:12
【问题描述】:
我正在编写一些软件来识别追踪号码(就像 Google 在您搜索 FedEx 或 UPS 号码时识别它们一样)。大多数快递员使用系统,例如“加权平均模数系统”,可用于识别号码是否是有效的跟踪号码。有谁知道 TNT 托运号码是否使用这样的系统,如果是,它是什么?我已经询问了 TNT 支持,代表告诉我他们没有……但我想再确认一下。
【问题讨论】:
标签: algorithm validation checksum
我正在编写一些软件来识别追踪号码(就像 Google 在您搜索 FedEx 或 UPS 号码时识别它们一样)。大多数快递员使用系统,例如“加权平均模数系统”,可用于识别号码是否是有效的跟踪号码。有谁知道 TNT 托运号码是否使用这样的系统,如果是,它是什么?我已经询问了 TNT 支持,代表告诉我他们没有……但我想再确认一下。
【问题讨论】:
标签: algorithm validation checksum
好的,你问到现在已经三个月了,但我在写一个类似的软件时偶然发现了这个。据我们所知,TNT 使用S10 跟踪号码系统。这意味着他们的号码将是 AA########AA 类型。最后两个字母对应一个 ISO/IATA 国家代码。话虽如此,TNT 使用我们认为必须代表全球的 WW。这不是一个完整的答案,至少与校验和或算法无关,但它可能有用吗?希望有帮助
柳树
【讨论】:
据我所知,没有。对不起。
我认为您正在尝试验证输入的跟踪号以确保输入正确?
-- 凯文·费尔柴尔德
【讨论】:
我相信有一个 Check Digit / Checksum 数字,可能是 MOD10 的衍生物,但不知道它是什么算法,被 TNT 称为第 9 位。 很高兴知道???
据我所知,12345678 校验位是 5,22345678 校验位是 8。
【讨论】:
其实是我写的MOD 11 VB.net如下:
Dim number As String = TextBox1.Text
Dim A As Integer
Dim B As Integer
Dim C As Integer
Dim check_digit As Integer
A = (CInt(Mid(number, 1, 1)) * 8) + (CInt(Mid(number, 2, 1)) * 6) + (CInt(Mid(number, 3, 1)) * 4) + (CInt(Mid(number, 4, 1)) * 2) + (CInt(Mid(number, 5, 1)) * 3) + (CInt(Mid(number, 6, 1)) * 5) + (CInt(Mid(number, 7, 1)) * 9) + (CInt(Mid(number, 8, 1)) * 7)
B = ((A \ 11) * 11)
C = A - B
If C = 0 Then
check_digit = 5
End If
If C = 1 Then
check_digit = 0
End If
If C <> 0 And C <> 1 Then
check_digit = 11 - C
End If
MsgBox(number & check_digit)
【讨论】: