From 74b0fb8c875ebdc0c5681ed125b5446a4a1cb07d Mon Sep 17 00:00:00 2001 From: Jaben Carsey Date: Fri, 22 Nov 2013 21:37:34 +0000 Subject: ShellPkg: Add ShellHexStrToUintn to allow for simple conversion of hex numbers. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jaben Carsey Reviewed-by: Erik Bjorge git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@14893 6f19259b-4bc3-4df7-8a09-765794883524 --- ShellPkg/Include/Library/ShellLib.h | 17 +++++++++++++++++ ShellPkg/Library/UefiShellLib/UefiShellLib.c | 26 ++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/ShellPkg/Include/Library/ShellLib.h b/ShellPkg/Include/Library/ShellLib.h index eefa030..4a79acd 100644 --- a/ShellPkg/Include/Library/ShellLib.h +++ b/ShellPkg/Include/Library/ShellLib.h @@ -1008,6 +1008,23 @@ ShellStrToUintn( ); /** + Function return the number converted from a hex representation of a number. + + Note: this function cannot be used when (UINTN)(-1), (0xFFFFFFFF) may be a valid + result. Use ShellConvertStringToUint64 instead. + + @param[in] String String representation of a number. + + @return The unsigned integer result of the conversion. + @retval (UINTN)(-1) An error occured. +**/ +UINTN +EFIAPI +ShellHexStrToUintn( + IN CONST CHAR16 *String + ); + +/** Safely append with automatic string resizing given length of Destination and desired length of copy from Source. diff --git a/ShellPkg/Library/UefiShellLib/UefiShellLib.c b/ShellPkg/Library/UefiShellLib/UefiShellLib.c index a0a7da8..40b87fe 100644 --- a/ShellPkg/Library/UefiShellLib/UefiShellLib.c +++ b/ShellPkg/Library/UefiShellLib/UefiShellLib.c @@ -3057,6 +3057,32 @@ ShellIsFileInPath( } /** + Function return the number converted from a hex representation of a number. + + Note: this function cannot be used when (UINTN)(-1), (0xFFFFFFFF) may be a valid + result. Use ShellConvertStringToUint64 instead. + + @param[in] String String representation of a number. + + @return The unsigned integer result of the conversion. + @retval (UINTN)(-1) An error occured. +**/ +UINTN +EFIAPI +ShellHexStrToUintn( + IN CONST CHAR16 *String + ) +{ + UINT64 RetVal; + + if (!EFI_ERROR(ShellConvertStringToUint64(String, &RetVal, TRUE, TRUE))) { + return ((UINTN)RetVal); + } + + return ((UINTN)(-1)); +} + +/** Function to determine whether a string is decimal or hex representation of a number and return the number converted from the string. Spaces are always skipped. -- cgit v1.1