![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
当方、C言語初心者です。チームでプログラム作成しているのですが、ダンプツールの作成で行き詰ってしまいました。
バイナリ形式で吐き出されたデータを書き直し、txt形式で吐き出すプログラムが作りたいです。
バイナリデータは64ビットで形成され、最初の2ビットで形式を、次の2ビットでデータサイズを表しています。
先頭2ビット:10(仮にAを表すとします)
2ビット:11(50サイズを表すとします)
上記バイナリを、Aや50と書き換えてtxtに書き出す。
(バイナリデータの数だけ繰り返すものです)
参考サイト等見ているのですが、どうにも理解できません。
Cを少し勉強しただけでは作れる代物ではありませんでした…
仲間内で作成している為、他のメンバーに迷惑を掛けたくありません。
そんな状況から、此方に書き込みさせていただきました。
ご教授、何卒よろしくお願い致します。
No.4ベストアンサー
- 回答日時:
とりあえず、何らかの方法で64ビットのデータを受け取り、それをuint_least64_t型の変数dataに格納するものとして、少し書いてみます。
uint_least64_t data;
/* 何らかの方法でデータを受け取る */
/* 上位から2ビットずつ取得 */
int first_2bits = (data >> (64-2)) & 0x3;
int second_2bits = (data >> (64-4)) & 0x3;
先頭ビットというのは上位ビットだと解釈して書いてみました。
該当モードの割り出し方法はまったく分からないので、自分で考えてください。
ちなみに、ビットフィールドを使うと、ビットの並び等がどうなるか処理系定義ですので、外部とのインタフェースに使うのはお勧めできません(参考URLを参照)。
参考URL:http://portable-c.jugem.jp/?eid=8
ご返答有難うございます。
先頭ビット=上位ビットで間違いありません。
Cの知識的にも、仕様的にも、曖昧な自分が質問をするのはだいぶ早すぎたと痛感しております。
もう少し勉強をして、知識を身に付け、それでも詰まったら再度質問しようかと思います。
(0x3と書かれて、調べなければ何の事か分からなかったくらい無知です)
教えていただいた知識は無駄には致しません。
至らない自分に貴重な時間を割いて頂き、jactaさん、mizunekoさん有難うございました。
このような中途半端な知識では逆に混乱させてしまいますので、一度質問〆たいと思います。乱文、場汚し、失礼しました。
No.3
- 回答日時:
>参考サイト等見ているのですが、どうにも理解できません。
検索するなら、"ビットフィールド"でしょうか。
No.2
- 回答日時:
> とある機械が内部で行った情報をバイナリ形式で吐き出してくるのですが
ですから、それはどうやって吐き出されて、どうやって受け取るのですか?
> ■■□□△△△…△ (64Bit)
> ■2BitでAモードを判断
> □2BitでBモードを判断
□2ビットはサイズではなかったのですか?
それから、■が配置されているのは、64ビットデータの上位側ですか?
No.1
- 回答日時:
> 仲間内で作成している為、他のメンバーに迷惑を掛けたくありません。
仕事でやっているのか、部活等でやっているのか、ボランティアでやっているのか、趣味でやっているのかわかりませんが、基本的にはチーム内で解決すべき問題かと思います。
具体的な作成方法は、情報が少なすぎて説明できません。
そもそも、バイナリ形式のデータというのが、ファイルなのか、何らかの通信経路や入力ポートや専用バスを通して得られるものなのかもさっぱりわかりません(多分こうだろうと思い込むことは簡単なのですが...)。
最初の2ビットというのが、具体的にはどのビットを指すのかもわかりません。10は仮にAとのことですが、では、00, 01, 11は何なのでしょうか?
11が50サイズというのもわかりません。では、00, 01, 10は何を表すのでしょうか?また、50サイズというのは50バイトのことでしょうか?それとも50ワード(ワード長は?)でしょうか?あるいは、もっと別の単位でしょうか?
この回答への補足
ご指摘有難うございます。
当方は仕事関係でのツール作成(無くても良いけど、あった方が便利程度のもの)です。
自分の文章力の無さは痛感しております。
なにぶんCは専門時代少し触っていましたが、仕事に入ってからはテスト業務がメイン、つい最近部署移動で急に開発も行うことになった人間です。C知識の無さもあり、変な回答すると思いますがご了承ください。
ツールですが、とある機械が内部で行った情報をバイナリ形式で吐き出してくるのですが、それをいちいち解析するのが面倒とのことで、勉強がてらということで作成をお願いされました。
機械が吐き出してくるバイナリは、機械の現在の状況(設定)です。
たとえば、スピーカーが○○形式で、マイクが○○形式といったものです。変な例えを書いて、逆に混乱させてしまったことをお詫びしますorz
データ構成は…
■■□□△△△…△ (64Bit)
■2BitでAモードを判断
□2BitでBモードを判断
バイナリデータ■から、A該当モードを割り出し
” □から、B該当モードを割り出し
最後にtxt形式で書き出す… といった感じです。
質問している本人がそこまで仕様について詳しくないというのは致命的ですね…
もう少し把握してから質問するべきでしたorz
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 物理学 光り時計の思考実験をやり直すと、ガンマの数式は成立しない。 2 2022/05/24 09:01
- Visual Basic(VBA) vbaエクセルマクロについて あるデータを作成し、デスクトップに.xlsx形式で保存するマクロを作成 2 2023/03/02 18:54
- Visual Basic(VBA) vbaエクセルマクロについて あるデータを作成し、デスクトップに.xlsx形式で保存するマクロを作成 6 2023/03/03 18:05
- Excel(エクセル) 「休日取得希望日」を申請したらシフト表に色付け 1 2022/04/17 14:22
- Perl perlのプログラミング 部分入れ替えの方法 1 2022/10/11 22:26
- 画像編集・動画編集・音楽編集 動画をディスク作成すると画像が乱れる。 4 2022/06/24 07:49
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/21 09:28
- C言語・C++・C# C言語の質問です。バイナリ形式で保存されたWindows Bitmap形式の画像ファイルを読み込み、 3 2023/07/19 14:58
- 分譲マンション 管理組合・議案書内の理事長の挨拶文書作成にについて 2 2023/03/26 01:56
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッファとは何ですか
-
エクセルVBA 2千万行のCSVファ...
-
Microsoft VBAで2GBを超えるフ...
-
バイナリエディタのつかいかた
-
EXCEL VBAでテキストファイルの...
-
なぜデータの整合性を確認する...
-
EOF
-
バイナリ表記を表示するコード...
-
ページ読み込み時に自動的にsub...
-
バイナリ表示されたデータを小...
-
入力ファイルをバイナリにする利点
-
fwriteでの書き込み
-
エラー:ストリームの終わりを...
-
バッファサイズについて
-
FMFファイルの構造を知りたいの...
-
テキストデータをバイナリデー...
-
FTPでエクセルをPUTするとファ...
-
エディットボックスの改行について
-
VBA バイナリ―から文字列にす...
-
バイナリーの画像データを読み...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッファとは何ですか
-
Microsoft VBAで2GBを超えるフ...
-
EXCEL VBAでテキストファイルの...
-
バイナリエディタのつかいかた
-
ページ読み込み時に自動的にsub...
-
VBA バイナリ―から文字列にす...
-
エクセルVBA 2千万行のCSVファ...
-
エラー:ストリームの終わりを...
-
EOF
-
【python】Excelファイルを読み...
-
EXCEL VBAで、バイナリデータの...
-
入力ファイルをバイナリにする利点
-
DXFファイル用クラスライブラリ...
-
バイナリーデータの一部データ...
-
C言語とシリアル通信の送受信...
-
C言語の質問です。バイナリ形...
-
Javaでのエンディアン変換
-
24ビットのWaveデータの中身に...
-
bitmap画像の保存がうまくいき...
-
PHPのfgetcsvの処理容量について
おすすめ情報