Re: [问题] GUID 字串格式转换

楼主: LessonWang (橘白Cat)   2017-07-21 09:32:45
※ 引述《LwHow (Do)》之铭言:
: 各位先进
: 小弟刚初学不久
: 想跟大家请教一下
: 如果想将下面这个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)
: 谢谢!
手边没电脑
只好凭空写一下 看能不能达到你的需求
tmp = guid.split(", ")
for i in range(len(tmp)):
tmp[i] = tmp[i][2:].zfill(len(tmp[i])-2)
formatted_guid = "-".join([tmp[0],tmp[1],tmp[2],"".join(tmp[3:5]),"".join(tmp[5:])])
楼主: LessonWang (橘白Cat)   2017-07-21 09:55:00
后来看完了之后才发现补零的部分 做一下修正for i in range(len(tmp)):if i == 0:tmp[i] = tmp[i][2:].zfill(8)elif i == 1 or i == 2:tmp[i] = tmp[i][2:].zfill(4)else:tmp[i] = tmp[i][2:].zfill(2)然后formatted_guid可以简化成formatted_guid = "-".join([*tmp[0:2],"".join(tmp[3:5]),"".join(tmp[5:])])

Links booklink

Contact Us: admin [ a t ] ucptt.com