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 가 생성되어 콘솔에 표준 출력으로 인쇄됩니다.