scala 创建带零的UUID

mtb9vblg  于 5个月前  发布在  Scala
关注(0)|答案(4)|浏览(85)

我正在尝试生成一个全为零的UUID:

java.util.UUID fromString "00000000-00000000-00000000-00000000"

字符串
误差

java.lang.IllegalArgumentException: Invalid UUID string: 00000000-00000000-00000000-00000000
    at java.util.UUID.fromString(UUID.java:194)


我做错了什么?
我想创建“MinValue”或“Invalid”UUID。

yvfmudvl

yvfmudvl1#

试试这个

System.out.println(new UUID(0,0));

字符串
它打印

00000000-0000-0000-0000-000000000000


这是在UUID.fromString中使用的正确格式

huus2vyu

huus2vyu2#

不是应该是8 - 4 - 4 - 4 - 12吗?就像这样:000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

6vl6ewon

6vl6ewon3#

来自https://en.wikipedia.org/wiki/Universally_unique_identifier#Nil_UUID:
“nil”UUID是一种特殊情况,是UUID,0000000 - 0000 - 0000 - 00000000000;也就是说,所有位都设置为零。
破折号应该遵循正常的8-4-4-4-12格式,因为这是标准要求使用的格式,并且许多(大多数?)工具在输入时强制执行该格式。
有些工具 * 可能 * 接受其他格式,例如32个十六进制数字,没有破折号,因为它们只是在验证之前删除破折号(如果存在),但您使用的特定工具有点严格/智能,这表明使用非标准格式是一个坏习惯,最终会咬你。

pu3pd22g

pu3pd22g4#

UUID是具有各种版本的标准化标识符。UUID版本4(UUIDv 4)遵循特定格式,由32个十六进制数字组成,以8-4-4-4-12模式分为五组,共36个字符,包括连字符。
要手动验证UUIDv 4,您可以对输入字符串执行特定的检查:
1.**长度检查:**确保UUID字符串长度为36个字符。
1.**位置检查:**确认连字符在字符串索引8、13、18和23处的位置。
1.**版本标识:**UUIDv 4在第15位包含“4”。
1.**内容检查:**UUIDv 4在第20位应至少包含“8”、“9”、“a”或“B”中的一个。
带有零的UUID版本4可以是:

  • 00000000-0000-4000-8000-000000000000
  • 00000000-0000-4000-9000-000000000000
  • 00000000-0000-4000-a000- 00000000000
  • 00000000-0000-4000-b000- 00000000000

相关问题