# SPDX-License-Identifier: Apache-2.0 # from https://gist.github.com/korzo89/71a6de0f388f7cf8b349101b0134060c function(from_hex HEX DEC) string(SUBSTRING "${HEX}" 2 -1 HEX) string(TOUPPER "${HEX}" HEX) set(_res 0) string(LENGTH "${HEX}" _strlen) while(_strlen GREATER 0) math(EXPR _res "${_res} * 16") string(SUBSTRING "${HEX}" 0 1 NIBBLE) string(SUBSTRING "${HEX}" 1 -1 HEX) if(NIBBLE STREQUAL "A") math(EXPR _res "${_res} + 10") elseif(NIBBLE STREQUAL "B") math(EXPR _res "${_res} + 11") elseif(NIBBLE STREQUAL "C") math(EXPR _res "${_res} + 12") elseif(NIBBLE STREQUAL "D") math(EXPR _res "${_res} + 13") elseif(NIBBLE STREQUAL "E") math(EXPR _res "${_res} + 14") elseif(NIBBLE STREQUAL "F") math(EXPR _res "${_res} + 15") else() math(EXPR _res "${_res} + ${NIBBLE}") endif() string(LENGTH "${HEX}" _strlen) endwhile() set(${DEC} ${_res} PARENT_SCOPE) endfunction() function(to_hex DEC HEX) while(DEC GREATER 0) math(EXPR _val "${DEC} % 16") math(EXPR DEC "${DEC} / 16") if(_val EQUAL 10) set(_val "A") elseif(_val EQUAL 11) set(_val "B") elseif(_val EQUAL 12) set(_val "C") elseif(_val EQUAL 13) set(_val "D") elseif(_val EQUAL 14) set(_val "E") elseif(_val EQUAL 15) set(_val "F") endif() set(_res "${_val}${_res}") endwhile() set(${HEX} "0x${_res}" PARENT_SCOPE) endfunction()