IN CHAR16 *Str\r
)\r
{\r
- UINTN Rvalue;\r
- UINTN Length;\r
-\r
- ASSERT (Str != NULL);\r
-\r
- //\r
- // convert hex digits\r
- //\r
- Rvalue = 0;\r
- Length = sizeof (UINTN);\r
- HexStringToBuf ((UINT8 *) &Rvalue, &Length, Str, NULL);\r
-\r
- return Rvalue;\r
+ return StrHexToUintn (Str);\r
}\r
\r
/**\r
OUT UINT64 *Data\r
)\r
{\r
- UINTN Length;\r
-\r
- *Data = 0;\r
- Length = sizeof (UINT64);\r
- HexStringToBuf ((UINT8 *) Data, &Length, Str, NULL);\r
+ *Data = StrHexToUint64 (Str);\r
}\r
\r
/**\r
\r
for(Index = 0; Index < StrLength; Index++, Str++) {\r
\r
- IsHexDigit (&Digit, *Str);\r
+ if ((*Str >= L'a') && (*Str <= L'f')) {\r
+ Digit = (UINT8) (*Str - L'a' + 0x0A);\r
+ } else if ((*Str >= L'A') && (*Str <= L'F')) {\r
+ Digit = (UINT8) (*Str - L'A' + 0x0A);\r
+ } else if ((*Str >= L'0') && (*Str <= L'9')) {\r
+ Digit = (UINT8) (*Str - L'0');\r
+ } else {\r
+ return EFI_INVALID_PARAMETER;\r
+ }\r
\r
//\r
// For odd charaters, write the upper nibble for each buffer byte,\r
\r
/**\r
Converts a string to GUID value.\r
+ Guid Format is xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\r
\r
@param Str The registry format GUID string that contains the GUID value.\r
@param Guid A pointer to the converted GUID value.\r
OUT EFI_GUID *Guid\r
)\r
{\r
- UINTN BufferLength;\r
- UINTN ConvertedStrLen;\r
- EFI_STATUS Status;\r
-\r
- BufferLength = sizeof (Guid->Data1);\r
- Status = HexStringToBuf ((UINT8 *) &Guid->Data1, &BufferLength, Str, &ConvertedStrLen);\r
- if (EFI_ERROR (Status)) {\r
- return Status;\r
+ //\r
+ // Get the first UINT32 data\r
+ //\r
+ Guid->Data1 = (UINT32) StrHexToUint64 (Str);\r
+ while (!IS_HYPHEN (*Str) && !IS_NULL (*Str)) {\r
+ Str ++;\r
}\r
- Str += ConvertedStrLen;\r
+ \r
if (IS_HYPHEN (*Str)) {\r
Str++;\r
} else {\r
return EFI_UNSUPPORTED;\r
}\r
-\r
- BufferLength = sizeof (Guid->Data2);\r
- Status = HexStringToBuf ((UINT8 *) &Guid->Data2, &BufferLength, Str, &ConvertedStrLen);\r
- if (EFI_ERROR (Status)) {\r
- return Status;\r
+ \r
+ //\r
+ // Get the second UINT16 data\r
+ //\r
+ Guid->Data2 = (UINT16) StrHexToUint64 (Str);\r
+ while (!IS_HYPHEN (*Str) && !IS_NULL (*Str)) {\r
+ Str ++;\r
}\r
- Str += ConvertedStrLen;\r
+\r
if (IS_HYPHEN (*Str)) {\r
Str++;\r
} else {\r
return EFI_UNSUPPORTED;\r
}\r
-\r
- BufferLength = sizeof (Guid->Data3);\r
- Status = HexStringToBuf ((UINT8 *) &Guid->Data3, &BufferLength, Str, &ConvertedStrLen);\r
- if (EFI_ERROR (Status)) {\r
- return Status;\r
+ \r
+ //\r
+ // Get the third UINT16 data\r
+ //\r
+ Guid->Data3 = (UINT16) StrHexToUint64 (Str);\r
+ while (!IS_HYPHEN (*Str) && !IS_NULL (*Str)) {\r
+ Str ++;\r
}\r
- Str += ConvertedStrLen;\r
+\r
if (IS_HYPHEN (*Str)) {\r
Str++;\r
} else {\r
return EFI_UNSUPPORTED;\r
}\r
\r
+ //\r
+ // Get the followin 8 bytes data\r
+ // \r
StrToBuf (&Guid->Data4[0], 2, Str);\r
//\r
// Skip 2 byte hex chars\r