2つの整数が文字列に連結され、その文字列が文字単位で読み込まれ、16進数で出力される場合、これらの数値の16進値は数字自体。C++での文字列から16進値への変換
例:
は、私は2つの数字、6、8、文字列 "ヤフー" を考えてみましょう。
最初の手順では、それらを連結して "6yahoo8"という文字列を
snprintf()
で取得します。次のステップで、私は私が最終的な出力を得るためにしたい、その進値から文字や印刷 によって
をその文字列の文字を読む:
{0x06で、0x79、の0x61、0x68 、0x6F、 0x6F、0x08}。
しかし、私のプログラムが結果を印刷している:
{0x36、0x79、の0x61、0x68、0x6F、 0x6F、0x38}。
この結果は、最初と最後のバイトを除いて正しいです。 私がしたいような仕事をどのように達成するか? アドバイスをいただきありがとうございます。
プログラム私は、文字列を形成するために使用しています:
string encode_url() { StringAccum sa; string url; const char *str = "yahoo"; int p = 6; int q = 8; sa.snprintf(1,"%x", p); // snprintf(len, format, value); sa << str.c_str(); sa.snprintf(1, "%x", q); url = string(sa.take_string().c_str()); return url; }
我々はC++で基本的に文字列のアキュムレータであるStringAccum、同様に使用するいくつかの慣習的な機能があります。
"C/C++"の使用を中止してください。 –
@NickyC私は、同じ番号のより良いバージョンを入れました:P –
数字を文字列に入れるとcharになり、 '6'のASCIIコードは36になります。 – Photon