0

嗨希望我能在这里得到一个愚蠢问题的答案。愚蠢,因为它已向我解释过,但我仍然无法正确理解。

Python Code:
sqln = 13173942528351756918
sqlid = ''
alphabet = '0123456789abcdfghjkmnpqrstuvwxyz'
for i in range(0, 13):
sqlid = alphabet[(sqln / (32 ** i)) % 32] + sqlid
RESULT: bdntyxtax2smq

vb.net code:
Dim sqln As UInt64 = 13173942528351756918 
Dim sqlid as string = ""
Dim alphabet as String = "0123456789abcdfghjkmnpqrstuvwxyz"
For iCount As Integer = 0 To 12
sqlid = alphabet((sqln / (32 ^ iCount)) Mod 32) + sqlid
Next iCount
RESULT: bfpuzytbx3s00

我怀疑结果不同的原因是因为 vb.net 在您调用 ^ 时返回双精度,我应该“转移”它但似乎无法解决语法(或找到它)感谢您的时间 =+ 想法=+ 帮助

4

1 回答 1

3

这一次,您将除以 32 iCount,这相当于右移5 * iCount

Dim sqln As UInt64 = 13173942528351756918UL
Dim sqlid as string = ""
Dim alphabet as String = "0123456789abcdfghjkmnpqrstuvwxyz"
For iCount As Integer = 0 To 12
  sqlid = alphabet((sqln >> (iCount * 5)) Mod 32) + sqlid
Next iCount
Console.WriteLine(sqlid)

输出:

bdntyxtax2smq

听起来阅读按位运算是个好主意:)

于 2012-03-01T22:48:45.040 回答