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");
}
Ruby on RailsによるWEBシステム開発、Android/iPhoneアプリ開発、電子書籍配信のことならお任せください この記事を書いた人と働こう! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

週刊Railsウォッチ

インフラ

Rubyスタイルガイドを読む

BigBinary記事より

ActiveSupport探訪シリーズ