以下のプログラムで接続先からバイナリデータを取得しているのですが
coutで出力しても画面に何も表示されません。
------------------------------------------------------
/*include部分は省きます*/
std::string bin; //1
clx::http session(clx::uri::encode(ip), 80); //2
session.get(clx::uri::encode(param)); //3
bin = session.body(); //4
std::cout << bin << std::endl; //5
------------------------------------------------------
上記プログラムを空ファイルにリダイレクトしバイナリエディタで見たら
ちゃんとデータは書き込まれていました。
5行目を以下のように変えても空欄が出力されただけで文字は表示されませんでした
std::cout << std::hex << bin << std::endl;
しかし以下のようにすると文字数は表示されました。
std::cout << bin.length() << std::endl;
やりたいこととしてはphpのpack()、unpack()的な部分です。
例えば
値をフォーマットを指定してバイナリデータとして出力
$val=pack("L", 35);
とか
バイナリデータを変数から指定バイト分取り出して10進数で画面に出力
$bin=(バイナリデータ);
$val=unpack("c",$bin);
echo(sprintf("%d",$val));
です。
バイナリの扱いはリトルエンディアンです。
ご教示お願いしますm(__)m
No.2ベストアンサー
- 回答日時:
#include <iostream>
#include <iomanip>
#include <string>
#include <algorithm>
using namespace std;
int main() {
const char raw[] = { 0x6a, 0x54, 0x5, 0x7a };
string bin(raw,4);
cout.fill('0');
for_each( bin.begin(), bin.end(),
[](char ch) { cout << hex << setw(2) << ((int)ch & 0xff) << ' '; });
cout << endl;
}
/* 実行結果
6a 54 05 7a
*/
お礼が大変遅くなりました。
教えていただいたとおりに試したところ期待通りの処理が書けました。
具体例を記載していただき大変助かりました。
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C++で2次元配列charをループしたい
-
wstringの主力
-
JPEGやPNGが読めるLoadImage関数
-
構文エラーが出ているのですが...
-
C言語のエラーを修正したい
-
C++でEXEを作成してCGI-BINで動...
-
gccでコンパイル時のエラー
-
C言語のポインターで詰まっている
-
switch文のエラーについて
-
ユークリッドの除去法アルゴリズム
-
std::map の const 修飾について
-
_tcscat がうまくいきません(V...
-
C++での標準関数の位置は?
-
linux系OSでC99
-
vectorの中にmap
-
なぜ、C++の標準ヘッダをインク...
-
2÷3などの余りについて
-
信頼区間の1.96や1.65ってどこ...
-
std::set<int> で、ある値が何...
-
「Aに対するBの割合」と「Aに対...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
switch文のエラーについて
-
構文エラーが出ているのですが...
-
なぜ、C++の標準ヘッダをインク...
-
gccでコンパイル時のエラー
-
空ENTERの判別
-
【C++】ヘッダ内でstringを格納...
-
snprintfが使用できない。
-
enumの値から定義名を文字列化...
-
#include "fstream.h"
-
C++で、テキストファイルを一行...
-
std::wstringのメモリリークに...
-
C++での <iostream.h>と<iostre...
-
VC++で文字列から任意の文字を...
-
#defineの使い方について
-
wstringの主力
-
vc++の使い方について
-
std::map の const 修飾について
-
string型のフォーマット書式指...
-
構造体配列のvectorへの変換と...
-
指定した文字を削除したい
おすすめ情報