使用ASCII编码,GUID中有多少个字符?
我对Microsoft样式感兴趣,其中包括大括号和破折号。
使用ASCII编码,GUID中有多少个字符?
我对Microsoft样式感兴趣,其中包括大括号和破折号。
Answers:
正如亚当·戴维斯(Adam Davis)所说,Microsoft风格是十六进制编码(用大括号和破折号使它更具可读性)可以使用一部分ASCII字符(0-9和AF)显示,但这并不是专门的ASCII编码。
我猜很重要的是要记住,显示GUID的微软风格只是GUID的一种表示形式,它实际上是一个16字节的整数值(如Micheal Trausch所述)。
您还可以通过将字节转换为不同的字符集(例如ASCII),以其他更紧凑的方式显示它。
理论上,您可以将每个字节显示为扩展的ASCII字符(255个字符),这将使您可以将GUID保存为16个字符长的字符串。
但是它不是很可读,因为它将包含空格字符(CR,空格,制表符等)和其他特殊字符,因此,只有当您想以非人类可读的字符格式有效地保存GUID时,这才有意义,例如在本机不支持GUID或快速匹配小二进制值的数据库中:http : //en.wikipedia.org/wiki/Extended_ASCII
恕我直言,显示更紧凑的GUID的最易读的方法是使用Base64编码,该编码可让您将其保存在长度为22个字符的字符串中,并使它看起来像这样:
7v26IM9P2kmVepd7ZxuXyQ==
但是,正如Jeff Atwood在其网站上所述,您还可以将GUID推入包含20个字符的ASCII85编码的字符串中:
[Rb*hlkkXVW+q4s(YSF0
有关更多启发,请参阅:http : //www.codinghorror.com/blog/2005/10/equipping-our-ascii-armor.html
长度取决于编码。您可以通过以下代码段获取标准编码和长度:
public void Main()
{
var guid = Guid.Empty;
Write(guid, "N"); // 32 characters
Write(guid, "D"); // 36 characters (default)
Write(guid, "B"); // 38 characters
Write(guid, "P"); // 38 characters
Write(guid, "X"); // 68 characters
}
private void Write(Guid guid, string format)
{
var guidString = guid.ToString(format);
Console.WriteLine("{0}: {1} ({2} characters)", format, guidString, guidString.Length);
}
有关详细信息,请参见Guid.ToString方法: