掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
文字列を16進コードに変換するには (ID:51052)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
16進に変換したものを元のバイナリデータに戻す処理を 以下のように修正してみました。 しかし、16進が00と続くとき、bufferがそこで閉じてしまいます。 これが「ビット演算だけで戻すのは不可能」ということなのでしょか。 別のやり方が思い浮かばないのですが。。 よろしくお願いいたします。 void ConvertToBin(char *buffer, const char *mem, size_t size) { const unsigned char * src = (const unsigned char *)mem; unsigned char chWk; size_t k = 0; int j = 0; for (; k < size; k++) { if (src[k] != '\0') { // インデックスが偶数の場合、下位4ビット取り出して上位4ビットにする if (k % 2 == 0) { // src[k]が'0'〜'9'の場合 if ( src[k] <= '9'){ chWk = (src[k] - '0') << 4;// 左に4ビットシフト // src[k]が'A'〜'F'の場合 } else { chWk = (src[k] - 'A' + 10) << 4;// 左に4ビットシフト } // インデックスが奇数の場合、下位4ビット取り出して下位4ビットにする } else { // src[k]が'0'〜'9'の場合 if (src[k] <='9') { buffer[j] = chWk + (src[k] - '0'); // 結合 // src[k]が'A'〜'F'の場合 } else { buffer[j] = chWk + (src[k] - 'A' + 10); // 結合 } j++; } // '\0'セット } else { buffer[j]=src[k]; break; } } }
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.