尝试将UInt64转换为base32字符串……在python中有效,而不是在vb.net中

尝试将UInt64转换为base32字符串……在python中有效,而不是在vb.net中,python,vb.net,base32,Python,Vb.net,Base32,嗨,希望我能在这里得到一个愚蠢问题的答案。 愚蠢是因为已经向我解释过了&我还是做不好 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:

嗨,希望我能在这里得到一个愚蠢问题的答案。 愚蠢是因为已经向我解释过了&我还是做不好

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在调用^时返回一个double,我应该“移位”它,但似乎无法计算语法(或找到它)
感谢您的时间=+ideas=+help

这一次,您将除以32iCount,这相当于向右移动
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

听上去读一下是个好主意:)

这一次,你要除以32i计数,这相当于向右移动
5*i计数

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

这听起来是一个好主意,读一下:)

你就是那个男人!!!你刚刚帮我对各种报表和联接中使用的Oracle SQL\u ID进行了反向工程。我现在可以改进我为Oracle编写的将SQL文本转换为ID的实用程序。我真是太感谢你了。@GregSimpson:没问题-我很少能帮助解决VB问题:)你就是那个人!!!你刚刚帮我对各种报表和联接中使用的Oracle SQL\u ID进行了反向工程。现在,我可以改进为Oracle编写的将SQL文本转换为ID的实用程序。非常感谢。@GregSimpson:没问题-我很少能帮助解决VB问题:)