[问题] GUID 字串格式转换

楼主: LwHow (Do)   2017-07-20 23:54:21
各位先进
小弟刚初学不久
想跟大家请教一下
如果想将下面这个String
0x798ffd60, 0xf10e, 0x4ac4, 0x89, 0x39, 0xc8, 0xbe, 0xab, 0xfe, 0x55, 0xb4
转换成格式成下面格式
798ffd60-f10e-4ac4-8939-c8beabfe55b4
有什么比较漂亮的写法吗?
有一个重点就是,格式必须要符合宽度
例如 第一组资料如果是0xffd60,则我们必须把资料补满为
000ffd60-xxxx-xxxx-xxxx-xxxxxxxx
其他字段以此类推
下面是我的Sample code(有点硬来...让大家伤眼了Orz)
def FillZeroByWidth(Str, Width):
Str = Str[2:].zfill(Width)
return Str
def FillZeroGuid(Str):
tmpList = Str.split(", ")
tmpStr = ""
tmpStr += fillzerobywidth(tmpList[0], 8)
tmpStr += fillzerobywidth(tmpList[1], 4)
tmpStr += fillzerobywidth(tmpList[2], 4)
tmpStr += fillzerobywidth(tmpList[3], 2)
tmpStr += fillzerobywidth(tmpList[4], 2)
tmpStr += fillzerobywidth(tmpList[5], 2)
tmpStr += fillzerobywidth(tmpList[6], 2)
tmpStr += fillzerobywidth(tmpList[7], 2)
tmpStr += fillzerobywidth(tmpList[8], 2)
tmpStr += fillzerobywidth(tmpList[9], 2)
tmpStr += fillzerobywidth(tmpList[10], 2)
return tmpStr
def strInsertIndex(Str, Index, Char):
return Str[:Index] + Char + Str[Index:]
def modifyGuidFormat(Str):
tmpStr = FillZeroGuid(Str)
tmpStr = strInsertIndex(tmpStr, 8, "-")
tmpStr = strInsertIndex(tmpStr, 13, "-")
tmpStr = strInsertIndex(tmpStr, 18, "-")
tmpStr = strInsertIndex(tmpStr, 23, "-")
return tmpStr
def main():
tmpGuid = modifyGuidFormat(Guid)
谢谢!
作者: alemonmk (单色柠檬子)   2017-07-21 00:20:00
研究一下 py 内建 uuid module 怎么用吧https://docs.python.org/3/library/uuid.html
楼主: LwHow (Do)   2017-07-21 00:29:00
感谢A大的支援!我立刻来研究一下!
作者: darkgerm (黑骏)   2017-07-21 09:19:00
撇开uuid的话 这个用format string就能做到了可以看 str.format

Links booklink

Contact Us: admin [ a t ] ucptt.com