以位为单位的字符串长度计算

String length calculation in bits

在安全相关的papers中,我们经常会发现一个字符串被称为«X位长度的字符串»,例如:

88cf3e49-e28e-4c0e-b95f-6a68a785a89d
This is a 128-bit value formatted as 36 hexadecimal digits separated by hyphens.

这个字符串是一个包含 4 个连字符的 32 个字符的 UUID。 我总是假设字符串长度(以位为单位)取决于应用的编码。那么,我怎么知道这个字符串是一个128位的字符串呢?

这些位是如何计算的?

该字符串中的每个字符都是一个十六进制数字。每个十六进制数字需要 4 位来表示。 32 * 4 = 128.

(注意:你的post说的是36,但那里有32位)。

字符串 本身 ,如果您谈论的是您所显示的文本表示形式,正如您所说,它取决于编码大小。例如,在 UTF-8 中,该字符串的长度为 36 * 8 = 288 位。