문제

ASCII 인코딩을 사용하면 안내서에 몇 개의 문자가 있습니까?

나는 곱슬 괄호와 대시를 포함하여 Microsoft 스타일에 관심이 있습니다.

도움이 되었습니까?

해결책

에서 MSDN:

안내서는 8 개의 16 진수 숫자의 한 그룹으로 구성된 128 비트 값이며, 각각 4 개의 16 진수 숫자의 3 개 그룹, 그리고 12 개의 16 진수 자릿수의 한 그룹이 이어집니다. 다음 예제 GUID는 GUID의 16 진수 숫자 그룹을 보여줍니다.

에서 위키 백과:

위의 형식을 동봉하기 위해 종종 버팀대가 추가됩니다.

{3F2504E0-4F89-11D3-9A0C-0305E82C3301}

따라서 곱슬 괄호로 인코딩하는 일반적인 16 진수의 총 38 자.

-아담

다른 팁

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 방법 자세한 내용 :

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top