문제
ASCII 인코딩을 사용하면 안내서에 몇 개의 문자가 있습니까?
나는 곱슬 괄호와 대시를 포함하여 Microsoft 스타일에 관심이 있습니다.
다른 팁
tl; dr : 없음.
Adam Davis가 말했듯이, Microsoft 스타일은 ASCII 문자 (0-9 및 AF)의 서브 세트를 사용하여 표시 할 수있는 HEX 인코딩 (더 읽기 쉬운 브레이스 및 대시 포함)입니다. 그러나 이것은 구체적으로 ASCII 인코딩이 아닙니다.
Guid를 표시하는 Microsoft 스타일은 Guid의 표현 일 뿐이며 실제로 16 바이트 적분 값 (Micheal Trausch가 언급 한 바와 같이)임을 기억하는 것이 중요하다고 생각합니다.
바이트를 다른 문자 세트 (ASCII와 같은)로 변환하여 다른, 더 컴팩트 한 방법으로 제시 할 수도 있습니다.
이론적으로 각 바이트를 확장 된 ASCII 문자 (255 문자)로 표시 할 수 있으므로 16 자 길이 문자열로 안내를 저장할 수 있습니다.
공백 문자 (CR, 공간, 탭 등) 및 기타 특수 문자가 포함되어 있기 때문에 읽을 수는 없으므로 인간이 아닌 읽기 쉬운 문자 형식으로 GUID를 효율적으로 저장하려는 경우에만 적합합니다. , 예를 들어, 기본적으로 GUID를 지원하지 않거나 작은 이진 값의 빠른 일치를 지원하지 않는 데이터베이스에서 :http://en.wikipedia.org/wiki/extended_ascii
IMHO 더 읽기 쉬운 방법이 더 컴팩트 한 IMHO는 Base64 인코딩을 사용하는 것입니다.
7v26IM9P2kmVepd7ZxuXyQ==
그러나 Jeff Atwood가 그의 사이트에서 언급 한대로 20 자로 ASCII85 인코딩 된 문자열로 안내를 밀 수 있습니다.
[Rb*hlkkXVW+q4s(YSF0
더 많은 영감은 다음을 참조하십시오.http://www.codinghorror.com/blog/2005/10/equiping-our-ascii-armor.html
Adam이 MSDN 견적에서 언급했듯이 UUID는 128 비트 값입니다. 이것은 그들이 값을 유지하기 위해 16 바이트의 RAM을 취한다는 것을 의미합니다. 텍스트 표현은 32 바이트 (각 단일 바이트에 대해 2 바이트)와 4 개의 하이픈 및 포함하려는 경우 2 개의 괄호가 필요합니다. 이것은 38 바이트에 해당합니다.
소프트웨어 사용자에게 UUID를 노출시키는 경우 괄호가 있거나없는 UUID를 제공 할 수 있습니다. 값을 어디에나 저장하는 경우 16 바이트 바이너리 표현으로 저장하는 것이 가장 좋습니다. 다른 UUID 구현과 상호 운용하는 경우 상호 운용성을 위해 기본 텍스트 형식을 사용하려면 다른 구현이 바이너리 UUID 값을 저장할 때 바이트 순서와 다른 작업을 수행하므로 이진 값을 사용하므로 이진 UUID 값을 저장할 수 있습니다.
길이는 인코딩에 따라 다릅니다. 이 스 니펫으로 표준 인코딩과 lenght를 얻을 수 있습니다.
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 방법 자세한 내용 :