1

そのため、16進値を含む文字列があります。たとえば、私の文字列には

string a = "0x4D";

charに0x4Dを割り当てることは可能でしょうか? 私が持っていた場合、私はそれを知っているので

char c = 0x4D 次に、その ASCII シンボルを出力できます。これはMになります。

「0x4D」を charに格納して、ASCII シンボルを出力できるようにすることはできますか? 誰かにヒントがあれば、それはありがたいです! これを行うためのより良い方法があれば、私に知らせてください! ありがとう!

4

4 に答える 4

2

strtol文字列を数値に変換するために使用できます。その後、この番号を印刷したり、その他の操作を行ったりできます。

ちょっと待って、あなたはそれを C++ とタグ付けしました。これstrtolは非常に C スタイルです。C++ では、文字列ストリームを使用して、そこから数値を抽出できます。

于 2012-12-01T22:45:23.740 に答える
2

std::stoi文字列を整数に変換するために使用できます(基数は0xプレフィックスから自動検出されます)。

std::string str = "0x4D";
char c = static_cast<char>(std::stoi(str));
std::cout << c << std::endl;

ただし、これでその値の ASCII 文字が得られるとは限りません。この単純なコードだけで発生する文字セット間のさまざまな変換があります。たとえばchar、文字列リテラルの s は、実装定義の実行文字セット"0x4D"の対応する値で初期化されます。印刷された文字も、それを表示している媒体によって解釈されます。

あなたができる最善の方法は、ASCII 値から文字へのマッピングを提供することです。インデックスが ASCII 値で、要素が対応する文字である配列を使用してこれを行うことができます。

于 2012-12-01T22:48:58.337 に答える
0

これに基づく解決策は次のstd::stringstreamとおりです。

std::istringstream iss ("0x4D");
iss.flags(std::ios::hex);
int i;
iss >> i;

std::cout << "[" << (char)i << "]" << std::endl;   //--> prints "[M]"
于 2012-12-01T22:56:18.000 に答える
0

Bas が示唆するように stringstreams を使用するには:

int x;
string s = "0x10";
stringstream ss;
ss << hex << s;
ss >> x;

でも無駄なやり方だと思います。

于 2012-12-01T22:54:58.603 に答える