すぐに忘れそうなのでメモ書きしておきます。
第2引数&endの意味がよく分かりません。適当なポインタを入れておけば良いのでしょうか。
IBMやMicrosoftの資料によると、文字列の読み取りを停止した文字(ヌル文字など)へのポインタを&endに格納するとのことです。読み取り不可の場合は文字列をそこに格納します。char* end = NULLでも問題ないみたいです。
#include <stdlib>
uint64_t numA;
uint64_t numB;
char* end;
<中略>
// sscanfで文字列として読み込んだnumAを16進数のuint64_tへ変換する
numB = strtoull(numA,&end,16);