我使用VB .Net访问eBay API并将所有已完成的订单存储在数据库中。然后将此数据库输入专有的运输系统,该系统无法处理大于20个字符的订单号。易趣返回的订单号如此230407279314-680141236013
太长了。订单号总是12个数字连字符和12个数字。我需要做的是将这个(结果可以是字母数字)转换成一个更短,唯一的订单键,与真正的orderId一起存储在我的数据库中(这样这可以通过运输软件而不是实际的订单号引用)。限制20个字符的原因是使用的条形码算法。有没有办法在VB .Net 2010中实现这一目标?这个数字可以是任何唯一的,只要它不存在(即使一个好的uniqueid函数也可以工作,但我必须查询数据库以确保它不被采用)
答案 0 :(得分:5)
您实际上可以将该数字转换为20个字符的字符串。您可以将数字拆分为六位数字。由于每个只需要存储20位,您可以将它们表示为五位十六进制数字:
230407 -> 38407
279314 -> 44312
680141 -> A60CD
236013 -> 399ED
哪个会给出20个字符的字符串:
3840744312A60CD399ED
这样做:
Dim code As String = _
Int32.Parse(orderNumber.Substring(0, 5)).ToString("x5") + _
Int32.Parse(orderNumber.Substring(5, 5)).ToString("x5") + _
Int32.Parse(orderNumber.Substring(11, 5)).ToString("x5") + _
Int32.Parse(orderNumber.Substring(16, 5)).ToString("x5")
答案 1 :(得分:0)
你可以将它存储为一个唯一的十六进制数字 - 比如说你已经将ebay代码存储为两个字符串:lefstr' - 'rightstring。所以在这种情况下leftstring ='230407279314'和rightstring ='680141236013'。
一旦你将它们放入一个字符串并从中检索整数值,你就可以将它存储为十六进制的字符串:id.toString(“x”)
id的长度不超过20个十六进制字符:)