【问题标题】:Python UUID badly formed hexadecimal stringPython UUID 格式错误的十六进制字符串
【发布时间】:2011-11-30 02:00:47
【问题描述】:

尝试根据 6.6 XY 坐标对和日期生成 UUID。但是我给函数一个“格式错误的十六进制 UUID 字符串”。 Python菜鸟请帮助。

def LeID(Xv,Yv,Dv):
    import uuid
    import string
    import arcpy
    X_val = "%.6f" % Xv
    Y_val  = "%.6f" % Yv
    date = Dv
    xarr = string.split(X_val, '.')
    yarr = string.split(Y_val, '.')
    date = string.split(date , '/')
    val =  str(xarr[0] + xarr[1] + yarr[0] + yarr[1] + date[0]  + date[1] + date[2] )
    return '{' + str(uuid.UUID(val).time_low()) + '}'

【问题讨论】:

    标签: python arcmap


    【解决方案1】:

    它不会像你想的那样工作。

    UUID 有多种类型:基于时间 (UUID1)、随机 (UUID4) 或基于另一个 UUID 加数据,通过 MD5 (UUID3) 或 SHA1 (UUID5) 组合在一起。

    因此,您可以将一个先前定义的 UUID(可能是 UUID('f82aa75f-56a8-442b-89d2-eb7aaae6f9c3'))作为命名空间并从中派生所有内容。

    def LeID(Xv,Yv,Dv):
        import uuid
        import string
        import arcpy
        MyNS = uuid.UUID('f82aa75f-56a8-442b-89d2-eb7aaae6f9c3')
        X_val = "%.6f" % Xv
        Y_val  = "%.6f" % Yv
        date = Dv
        xarr = string.split(X_val, '.')
        yarr = string.split(Y_val, '.')
        date = string.split(date , '/')
        val =  str(xarr[0] + xarr[1] + yarr[0] + yarr[1] + date[0]  + date[1] + date[2] )
        print MyNS, repr(val) # for debugging
        return '{' + str(uuid.uuid5(MyNS, val)) + '}'
    

    【讨论】:

    • 请添加我新添加的打印行,以了解 uuid 引擎中的内容。
    猜你喜欢
    • 2022-01-15
    • 1970-01-01
    • 2023-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-15
    • 2016-11-22
    • 2016-05-29
    相关资源
    最近更新 更多