尝试将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问题:)