Создайте уникальную строку фиксированной длины из другого уникального числового значения, которое слишком длинное - PullRequest
2 голосов
/ 13 февраля 2012

Я использую VB .Net для доступа к API eBay и хранения всех выполненных заказов в базе данных.Затем эта база данных подается в запатентованную систему доставки, которая не может обработать номер заказа, превышающий 20 символов.eBay возвращает номер заказа, например, 230407279314-680141236013, который слишком длинный.Номер заказа всегда состоит из 12 цифр и дефиса и еще 12 цифр.Что мне нужно сделать, так это превратить это (результат может быть буквенно-цифровым) в более короткий, уникальный ключ заказа, который будет храниться в моей базе данных вместе с истинным идентификатором orderId (чтобы на него могло ссылаться программное обеспечение доставки вместо фактического номера заказа).).Причиной ограничения в 20 символов является используемый алгоритм штрих-кода.Есть ли способ добиться этого в VB .Net 2010?Это число может быть любым уникальным, если оно еще не существует (даже хорошая функция uniqueid будет работать, но мне придется запросить базу данных, чтобы убедиться, что она не взята)

Ответы [ 2 ]

5 голосов
/ 13 февраля 2012

Вы можете превратить это число в строку из 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")
0 голосов
/ 13 февраля 2012

Вы можете сохранить его как одно уникальное шестнадцатеричное число - скажем, вы сохранили код ebay в виде двух строк: lefstr '-' rightstring.Так что в этом случае leftstring = '230407279314' и rightstring = '680141236013'.

как только вы поместите их в одну строку и извлечете из нее целочисленное значение, вы сможете сохранить ее как строку в шестнадцатеричном виде: id.toString ("x")

идентификатор будет содержать не более 20 шестнадцатеричных символов:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...