気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
char型にキャストしてからcoutすれば出力できると思いますが。
C++
1char zero; 2std::cout << (zero = '0') << "\n" 3 << (zero = 0x30) << "\n" 4 << char(0x30) << "\n" 5 << static_cast<char>(0x30) << std::endl;
投稿2017/07/21 16:21
総合スコア35668
0
ベストアンサー
16進数の数値
べつにコンピュータの動作上16進数で扱っているわけではないのですでに質問が謎です。
いいですか?binaryをhex(16進数)で表示することが多いのはあくまで人間が見てbit列を把握しやすいからであって、16進数の数値なんてものは存在しません。
16進数の数値とやらが何のことを指しているのかわかりませんが候補を上げましょう。
0x
prefixが付いた数値リテラル
ex.) 0x30
- 16進数で書かれた文字列リテラル、ないしそれが格納されたメモリー空間へのポインタ等
ex.) "30"
0x
prefixが付いた数値リテラルの場合
やりたいことは
数値リテラルが表す数が任意の文字コードで合法な値であり、これを文字として扱いたい
となるので、他の方が回答されているように、文字を表す型(ここで文字とは印字文字を差さない)であるchar
/wcahr_t
/char16_t
/char32_t
に変換すればいいことになります。
つまり
cpp
1char(0x30); 2wchar_t(0x30); 3char16_t(0x30); 4char32_t(0x30);
のようにすればいいことになります。
16進数で書かれた文字列リテラル、ないしそれが格納されたメモリー空間へのポインタ等の場合
やりたいことは
16進数で書かれた文字列を数値に変換してこれを文字として扱いたい
となります。数値に変換したあとは先と同じなので割愛して、文字列を数値に変換するのはstd::stoi
系関数を利用すればいいです。第3引数に16
を渡せば文字列を16進数としてパースします。
投稿2017/07/22 09:53
編集2017/07/22 09:55総合スコア5852
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
1バイトずつ取り出して%cで表示でしょうか。
c++
1#include <iostream> 2#include <string> 3#include <vector> 4 5int main() 6{ 7 // Hello, world! 8 std::vector<char> ascii = {0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x2c, 0x20, 9 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x21, 0x00}; 10 11 for (const auto& chr : ascii) { 12 std::cout << chr; 13 } 14 std::cout << std::endl; 15 16 std::cout << ascii.data() << std::endl; 17 18 return 0; 19} 20
投稿2017/07/21 16:24
編集2017/07/21 17:24退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/07/22 02:07
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。