从另一个太长的唯一数值创建一个固定长度的唯一字符串

Mik*_* L. 2 .net vb.net uniqueidentifier

我使用VB .Net访问eBay API并将所有已完成的订单存储在数据库中.然后将此数据库输入专有的运输系统,该系统无法处理大于20个字符的订单号.易趣返回的订单号230407279314-680141236013太长了.订单号总是12个数字连字符和12个数字.我需要做的是将这个(结果可以是字母数字)转换成一个更短的,唯一的订单键,与真正的orderId一起存储在我的数据库中(这样这可以通过运输软件而不是实际的订单号引用).限制20个字符的原因是使用的条形码算法.有没有办法在VB .Net 2010中实现这一目标?这个数字可以是任何唯一的,只要它不存在(即使一个好的uniqueid函数也可以工作,但我必须查询数据库以确保它不被采用)

Guf*_*ffa 5

您实际上可以将该数字转换为20个字符的字符串.您可以将数字拆分为六位数字.由于每个只需要存储20位,您可以将它们表示为五位十六进制数:

230407 -> 38407
279314 -> 44312
680141 -> A60CD
236013 -> 399ED
Run Code Online (Sandbox Code Playgroud)

哪个会给出20个字符的字符串:

3840744312A60CD399ED
Run Code Online (Sandbox Code Playgroud)

像这样做:

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")
Run Code Online (Sandbox Code Playgroud)