현재 위치 - 주공해몽공식사이트 - 랜덤 번호 뽑기 점술 - UUID GUID 를 빠르게 생성하는 방법

UUID GUID 를 빠르게 생성하는 방법

범용 GUID 의 구조는 다음과 같습니다

Typedef struct _GUID {

Dword data1;

WORD Data2

WORD Data3

바이트 데이터 4 [8];

} GUID

예를 하나 들어보죠.

GUID 의 형식이 6b29 fc40-ca47-1067-B31d-00dd010662da 라고 가정합니다.

여기서 Data 1 은 32 비트이며 위의 6B29FC40 에 해당하는 8 개의 4 자리 16 진수로 간주됩니다.

여기서 Data2 는 16 비트이며 위의 CA47 에 해당하는 4 자리 16 진수로 볼 수 있습니다.

Data3 은 16 비트이며 위의 1067 에 해당하는 4 자리 16 진수로 볼 수 있습니다.

여기서 Data4 는 8 바이트로 비교적 특수하며 16 4 자리 16 진수로 볼 수 있습니다.

Data4 [0] 과 data4 [1] 를 취하여 위 B3 1D 에 해당하는 4 자리 16 진수를 구성합니다.

위의 00DD 에 해당하는 4 자리 16 진수로 구성된 data4 [2] 와 data4 [3] 을 취합니다.

Data4 [4] 와 data4 [5] 를 취하여 위 0 106 에 해당하는 4 자리 16 진수를 구성합니다.

Data4 [6] 와 data4 [7] 을 취하여 위의 62DA 에 해당하는 4 자리 16 진수를 구성합니다.

* 참고: 4 개의 16 진수는 GUID 문자 하나에 해당합니다.

GUID 를 생성하는 함수는 Windows 에서 사용할 수 있습니다. 헤더 파일인 "objbase.h" 와 linkbase ole32.lib 가 필요합니다.

Hresult cocreate guid (guid * pg uid);

Linux 에서는 먼저 해당 라이브러리 파일과 헤더 파일을 다운로드해야 합니다.

데비안 사용자라면 apt 명령을 통해 관련 자원을 쉽게 얻을 수 있습니다.

Apt-get 설치 uuid-dev

설치가 완료되면 다음을 찾을 수 있습니다

/usr/include/ 아래에 헤더 파일 uuid.h 가 포함된 uuid 폴더가 있습니다

/usr/lib/ 에는 정적 및 동적 링크 라이브러리를 포함한 여러 libuuid* linkbase 파일이 있습니다.

Uuid.h 를 열면 uuid _ uuid_generate(uuid_t out) 에 대한 함수 선언을 찾을 수 있습니다. 이 함수를 호출하여 UUID 를 생성할 수 있습니다.

Uuid _ generate (reinterpret _ cast < 부호 없는 문자 * & gt(& ampguid)););

GUID 는 쉽게 생성됩니까? 네, 생성 된 알고리즘을 구현할 필요가 없기 때문에 전임자의 어깨에 서 있기 때문에 감사해야합니다.

다음은 WINDOWS 와 LINUX 의 일반 프로그램입니다.

// uuid_test.cpp

# include & lt 문자열>

# include & ltstdio.h & gt

# include & ltiostream & gt

# uuid_test.hpp 포함

#ifdef WIN32

# include & ltobjbase.h & gt

# 그렇지 않으면

# include & ltuuid/uuid.h >

#endif

네임스페이스 STD 사용

네임스페이스 ChinuxTeam

{

GUID CreateGuid ()

{

GUID guid

#ifdef WIN32

CoCreateGuid(& amp;; Guid);

# 그렇지 않으면

Uuid _ generate (reinterpret _ cast < 부호 없는 문자 * & gt(& ampguid)););

#endif

Guid 를 반환합니다

}

String guid tostring (constguid & (guid)

{

Charbuf [64] = {0};

#ifdef __GNUC__

Snprintf (

# 그렇지 않으면 // MSVC

_snprintf_s (

#endif

버프,

Sizeof(buf),

"{%08x-%04x-%04x-%02x% 02x-%02x% 02x% 02x% 02x% 02x% 02x}" ,

Guid 입니다. 데이터 1, guid 입니다. 데이터 2, guid. 데이터 3,

Guid 입니다. 데이터 4[0], guid 입니다. 데이터 4[ 1],

Guid 입니다. 데이터 4[2], guid 입니다. 데이터 4[3],

Guid 입니다. 데이터 4[4], guid 입니다. 데이터 4[5],

Guid 입니다. 데이터 4[6], guid 입니다. 데이터 4 [7]);

Std:: string (buf);

}

}

해당 헤더 파일

// uuid_test.hpp "

# include & lt 문자열>

# include & ltstdio.h & gt

# include & ltiostream & gt

Typedef struct _GUID

{

부호 없는 긴 데이터1;

부호 없는 짧은 데이터 2;

부호없는 짧은 데이터 3;

부호없는 문자 데이터 4 [8];

} UUID GUID;;

네임스페이스 ChinuxTeam

{

Guidcreateguid ();

String guid tostring (constguid & Guid);

}//네임스페이스 ChinuxTeam

마지막 GuidToString () 은 GUIDs 를 고정 형식의 표준 문자열 String 으로 출력하는 데 사용된다는 점을 조금 설명합니다.

컴파일러의 호출에 따라 다른 문자열 인쇄 함수를 호출합니다.

간단한 테스트 함수를 첨부합니다.

# include & lt 문자열>

# include & ltstdio.h & gt

# include & ltiostream & gt

#ifdef WIN32

# "objbase.h" 포함

# 그렇지 않으면

Typedef struct _GUID

{

부호 없는 긴 데이터1;

부호 없는 짧은 데이터 2;

부호없는 짧은 데이터 3;

부호없는 문자 데이터 4 [8];

} UUID GUID;;

#endif

네임스페이스 ChinuxTeam{

Guidcreateguid ();

String guid tostring (constguid & Guid);

}

실행 후 GUID 가 생성되어 콘솔에 표준 출력으로 인쇄됩니다.