16進文字列は 1バイト(8ビット)のデータを16進文字 2文字で表現したものです。
どこかに定義がありそうな気がするが、 見つからなかった。
下記を参考にした。
// 読み込んだデータを1バイトずつ16進数で出力 for (i = 0; i < read_size; i++) { printf("%02X", bytes[i]); }
このコードでは標準出力に表示している。 欲しいのは文字列なので snprint を使用する。
逆変換は下記を参考にした。
const char * hex2bin(const char *hex, char *bin, size_t binsize) { if (hex && bin) { for (; binsize && isxdigit(hex[0]) && isxdigit(hex[1]); hex += 2, bin += 1, binsize -= 1) { int r = sscanf_s(hex, "%2hhx", bin); if (r != 1) { break; } } }
サンプルコードを Guthub に公開した。
https://github.com/ohwada/MAC_cpp_Samples/tree/master/binary/hex