@Eljay's code is correct. You could also create a helper function to combines multiple characters into a uint64_t magic file number.
#include <cstdint>
#include <iostream>
constexpr uint64_t make_magic(const char* str) {
return (static_cast<uint64_t>(str[0]) << 56) |
(static_cast<uint64_t>(str[1]) << 48) |
(static_cast<uint64_t>(str[2]) << 40) |
(static_cast<uint64_t>(str[3]) << 32) |
(static_cast<uint64_t>(str[4]) << 24) |
(static_cast<uint64_t>(str[5]) << 16) |
(static_cast<uint64_t>(str[6]) << 8) |
(static_cast<uint64_t>(str[7]));
}
int main() {
constexpr uint64_t magic = make_magic("Magic123");
std::cout << std::hex << magic << '\n';
return 0;
}