Active Directory GUID 字符串可以不区分大小写地进行比较吗?
Are Active Directory GUID strings fine to compare case insensitively?
我找不到这个记录,所以我想知道它是否重要...
对于 Active Directory,您可能需要比较应用程序 ID、对象 ID 等以了解其中的一个以用于授权目的。由于应用程序 ID 和对象 ID 只是随机生成的 GUID,它们首先在一个地方生成,然后复制到需要它们的任何其他地方,我看不出这些标识符的大小写会改变或变化的充分理由.所以我猜它 'fine' 大多数时候对它们进行区分大小写的比较。
但是 GUID 通常不区分大小写地进行分析,因此从逻辑上讲,进行不区分大小写的比较似乎也应该没问题。这将是最广泛兼容的方法。
所以结论是......这并不重要......但不区分大小写应该是首选,对吧?如果不是,为什么不?
在幕后,GUID(或 UUID)是一个 128 位数字。文本表示中的字母实际上不是字母:它们是 16 进制的数字,其中 A-F 位于 9 之后。因此大小写完全没有区别。
如果您要比较字符串表示形式,那么进行区分大小写的比较没有坏处。然而,更好(并且稍微快一些)的是比较实际数值。例如,.NET 具有 Guid
struct, where the equality operator 比较值中的每个字节。
我找不到这个记录,所以我想知道它是否重要...
对于 Active Directory,您可能需要比较应用程序 ID、对象 ID 等以了解其中的一个以用于授权目的。由于应用程序 ID 和对象 ID 只是随机生成的 GUID,它们首先在一个地方生成,然后复制到需要它们的任何其他地方,我看不出这些标识符的大小写会改变或变化的充分理由.所以我猜它 'fine' 大多数时候对它们进行区分大小写的比较。
但是 GUID 通常不区分大小写地进行分析,因此从逻辑上讲,进行不区分大小写的比较似乎也应该没问题。这将是最广泛兼容的方法。
所以结论是......这并不重要......但不区分大小写应该是首选,对吧?如果不是,为什么不?
在幕后,GUID(或 UUID)是一个 128 位数字。文本表示中的字母实际上不是字母:它们是 16 进制的数字,其中 A-F 位于 9 之后。因此大小写完全没有区别。
如果您要比较字符串表示形式,那么进行区分大小写的比较没有坏处。然而,更好(并且稍微快一些)的是比较实际数值。例如,.NET 具有 Guid
struct, where the equality operator 比较值中的每个字节。