Tech Racho エンジニアの「?」を「!」に。
  • Ruby / Rails以外の開発一般

C/C++: 16進数文字列をバイト列に変換する

16進数の文字列を、バイト列に変換するコードです。
再利用できそうなので貼っておきます。

void BytesFromHexString(unsigned char *data, const char *string) {
    printf("string:%s\n", string);
    int len = (int)strlen(string);
    for (int i=0; i<len; i+=2) {
        unsigned int x;
        sscanf((char *)(string + i), "%02x", &x);
        data[i/2] = x;
    }
}

(おまけ)バイト列を、16進数文字列でログ出力

void printh(unsigned char* data, unsigned int len) {
    for (int i=0; i<len; i++) {
        printf("%02x", data[i]);
    }
    printf("\n");
}

更新情報

  • 2011/08/11: 初版公開
  • 2021/12/17: 細部更新

関連記事

16進文字列とバイト列を相互変換する(ruby)


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。