如何实现给定版本4 UUID A生成有效版本4 UUID B的函数增量(uuid),其中:
同样的减量(uuid)给定版本4 UUID A产生有效版本4 UUID B其中:
答案 0 :(得分:0)
不可能。除了为版本和变体字段保留的6位之外,v4 UUID由完全随机的数据组成 - 即没有固有的“序列”概念,在其中定义有意义的递增/递减操作。
答案 1 :(得分:0)
这是一个实现你想要的python函数:
def increment_uuid(uuid, increment):
# Return a UUID value incremented by an integer
hex_str = uuid[:8] + uuid[9:13] + uuid[14:18] + uuid[19:23] + uuid[24:]
incremented_val = int(hex_str, 16) + increment
assert(incremented_val >= 0 and incremented_val <= 2 ** 128)
incremented_hex = format(incremented_val, '032x')
incrmented_uuid = incremented_hex[:8] + '-' + incremented_hex[8:12] + '-' + incremented_hex[12:16] \
+ '-' + incremented_hex[16:20] + '-' + incremented_hex[20:]
return incrmented_uuid
现在,您只需将UUID增加1即可获得&#39;序列中的下一个&#39;:
import uuid
uuid_a = uuid.uuid4() # e.g. a32258b5-2781-44ec-9e00-f4b1185e9936
uuid_b = increment_uuid(str(uuid_a),1) # e.g. a32258b5-2781-44ec-9e00-f4b1185e9937
当然,它只是将数据视为128位十六进制值,并忽略对版本号和变体位的约束。