On Wed, 4 Jan 2006, John Fouhy wrote: > On 04/01/06, Terry Carroll <[EMAIL PROTECTED]> wrote: > > I hope someone more artful than I can show a quick and easy way to convert > > either '758C87F3' or -1972144115 to the '8A73780D' that is your goal. > > Hmm, well, > > >>> i = -1972144115 > >>> '%X' % (pow(2, 32)-(~i+1)) > '8A73780D'
Aha, I also figured another way myself in the meantime: >>> import win32api >>> CD_Info = win32api.GetVolumeInformation("D:/") >>> serno = CD_Info[1] >>> serno_str = "%X" % (0x100000000+serno) >>> serno_str '8A73780D' >>> > >>> cdi = win32api.GetVolumeInformation('D:/') > >>> '%X' % cdi[1] > '49BC31DB' > > So, on my system (ActivePython 2.4, WinXPpro) there is no need for magic. I think you just got lucky that your first digit (4) was in the range 0-7, and so didn't generate a negative. But you *do* point out a fault in my approach. I'll give an incorrect result for a non-negative. I think the correct way is: >>> import win32api >>> CD_Info = win32api.GetVolumeInformation("D:/") >>> serno = CD_Info[1] >>> if serno < 0: ... serno_str = "%X" % (0x100000000+serno) ... else: ... serno_str = "%X" % serno ... >>> serno_str '8A73780D' >>> _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor