문제

왜시니다.NET GUID?이 있는 대시에서 대부분의 구현 GUID,또는 그냥 Microsoft 것은?

서명

741ecf77-9c92-4435-8e6b-85975bd13452

도움이 되었습니까?

해결책

기술적으로, "대시"는 없습니다. 안내. 안내서는 128 비트 값으로 일반적으로 다음과 같은 방식으로 저장됩니다 (구조를 나타내는 데 C#을 사용).

public struct Guid
{
  public ulong Data1;
  public ushort Data2;
  public ushort Data3;
  public fixed byte Data4[8];
}

대시는 안에 있습니다 문자열 표현 안내의.

대시는 선택 사항이며 GUID의 문자열 표현에는 필요하지 않습니다.

즉, 대시 배치가 어디에 있는지에 대한 역사적 이유가 있습니다.,지도가 어떻게 생성되었는지와 관련이 있지만 그 역사적 의미 론은 더 이상 적용되지 않습니다.

다른 팁

초기 버전의 UUID(Universally Unique Identifier)사양,각각의 데이터 요소를했다는 의미:

{ time_low } – { time_mid } – { time_high_and_version } – { clock_seq_and_reserved clock_seq_low } – { node_id }

이러한 요소들을 제공하도록 설계되었간(시간 비트)및 공간(스 비트)다.

버전은 역사

으로 수학의 확률 충돌에서 keyspace2^1024 임의의 비트가 발견되었을 것 천문학적으로 황당한 이후 버전의 UUID 스펙을 단계적으로 시간 및 호스트를 위한 데이터 보안 및 개인 정보 보호 이유입니다.

유일한 요소는 보유 어떤 의미가 있는 버전에 비트 예약 비트입니다.

버전 3Uuid 에서 파생됩니다 MD5 해쉬의 URI 또는 다른 차별화된 이름입니다.

버전 4 로 생성되는 임의의 데이터이며,현재 가장 일반적인 구현에서 볼 수 있습니다.

버 5 에서 파생되는 SHA1 해시입니다.

저장 형식

때문에 하이픈에 대해 지정된 ASCII 형식의 바둑에서는 RFC 도 개별적인 부분이 더 이상 유지 원래의 의미,그들은 여전히 필수해야 하는 경우 상호 운용성을 보장합니다.

Uuid 은 또한 때때로 저장되어로 base64 또는 ascii85 인코딩된 문자열을 저장할 공간에 대한 전송을 통해 전송되지 않는 이진,안전 및 준수를 RFC 이 필요하지 않습니다.

Ascii:   3F2504E0-4F89-11D3-9A0C-0305E82C3301
Base64:  7QDBkvCA1+B9K/U0vrQx1A
Ascii85: 5:$Hj:Pf\4RLB9%kU\Lj

참고:
RFC4122 (3 페이지 참조를 위해 특별히 ABNF 대한 설명 UUID 형식)
Wikipedia GUID UUID

하이픈은 안내의 바이트 구조를 나타냅니다.

typedef struct _GUID 
{  
   DWORD Data1;  
   WORD Data2;  
   WORD Data3;  
   BYTE Data4[8];
} GUID;

을 위한:

(XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX)

저장하기 전에 제거 할 수 있습니다. 적어도 .NET에서 Guid 유형의 생성자는 하이픈이 여전히 존재하는지 또는 제거되었는지 여부에 관계없이 문자열 표현에서 안내 변수를 초기화합니다.

다양한 형식으로 안내를받을 수 있습니다.

C#을 사용하고 있다고 가정합니다.

Guid guid = Guid.NewGuid();

Console.WriteLine(guid.ToString("N"))

63BE6F7E4E564F0580229F958F492077

Console.WriteLine(guid.ToString("D"))

63BE6F7E-4E56-4F05-8022-9F958F492077

Console.WriteLine(guid.ToString("B"))

{63BE6F7E-4E56-4F05-8022-9F958F492077}

Console.WriteLine(guid.ToString("P"))

(63BE6F7E-4E56-4F05-8022-9F958F492077)

편리함 일뿐입니다.

http://en.wikipedia.org/wiki/guid

이것은 전화 번호, 신용 카드 번호 등과 마찬가지로 청킹의 예입니다.

여기에 대한 좋은 위키 백과 기사가 있습니다.

내가 본 가이드의 거의 모든 시각적 표현은 점선 형식을 사용합니다. 눈이 훨씬 쉽습니다.

그만큼 Guid .NET 클래스는 분리기, 분리기, 구분 제로 괄호, 구분 제로 괄호, 구분 제지기 등의 다른 형식을 인식합니다.

하이픈은 각 숫자를 분리하는 데 사용됩니다

E93416C5-9377-4A1D-8390-7E57D439C9E7

Hex digits  Description
8           Data1
4           Data2
4           Data3
4           Initial two bytes from Data4
12          Remaining six bytes from Data4

그것은 편의를위한 것입니다. 안내는 16 바이트로 구성되어 있으며 16 바이트 표현으로 32 자입니다. 하이픈이 없으면 안내는 인간에 의해 인식하기가 더 어렵고 임의의 자연 16 바이트 숫자가 아니라 안내로 인식되기가 더 어렵습니다.

어딘가에 안내서를 저장하려면 텍스트 표현이 아닌 16 바이트 배열로 보관하십시오. 당신은 많은 공간을 절약 할 것이고, 하이픈 문제는 발생하지 않을 것입니다.

안내는 실제로 숫자 일뿐입니다. 하이픈은 다양한 구성 요소가 어떻게 분해되는지 보여 주지만 실제로는 숫자의 일부가 아닙니다. IP 주소와 같습니다. 32 비트 번호를 저장하거나 점이있는 문자열을 저장할 수 있습니다.

Hypens는 가치의 독창성 또는 무작위성에 적합하게 영향을 미치지 않습니다. 그것들은 단지 안내의 정의로부터의 보류 일 뿐이며지도를 구성하는 4 개의 별개의 데이터 부분을 시각적으로 분리합니다.

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