生のバイナリを16進数(またはbase64)表現に変換する必要があります。たとえば、バイトの値が255(10進数)の場合、(文字列としての)16進表現は「ff」になります。
生の入力を格納するために使用する(従来の)タイプはunsigned charであるため、0〜255の範囲をバイトごとに簡単に取得できますが、その配列の各バイトには、signed char(またはstd: :string)タイプを使用して表現を格納します。これは、XMLで使用するものです。
フレームワークには、生のバイトをBase64または16進数に変換する方法がある可能性があります。そうでない場合は、hexの1つの方法を次に示します。
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main (void) {
ostringstream os;
os.flags(ios::hex);
unsigned char data[] = { 0, 123, 11, 255, 66, 99 };
for (int i = 0; i < 6; i++) {
if (data[i] < 16) os << '0';
os << (int)data[i] << '|';
}
string formatted(os.str());
cout << formatted << endl;
return 0;
}
出力:00 | 7b | 0b | ff | 42 | 63 |