No.2ベストアンサー
- 回答日時:
#include <stdlib.h>
typedef unsigned char byte;
void a2b(char *asc, byte *bin)
{
while (*asc)
*bin++ = (byte)strtol(asc, &asc, 16);
}
と定義しておいて、
void main(int, char**, char**)
{
byte bin[3];
a2b("05 50 0e", bin);
}
と呼べばbinにバイナリが入りますよ。
strtolの仕様はマニュアルで確認してくださいね。
No.4
- 回答日時:
ライブラリはよくわからないので考え方を・・・
1:処理する文字は数字の'0'~'9'と英字の'A'~'F'(小文字が有るときはそれも考慮する)
2:数字の時は ASCII-'0'で0~9の値を取得する
英字のときは (ASCII-'A')+10 で10~15の値を取得する
3:あとは上位下位を考慮した処理を行う
上位のデータのときは左に4bitシフト
下位のときは上位のデータとorで合成する
こんな感じでいかがでしょう。
No.3
- 回答日時:
「空白区切りの16進数2桁」と言う前提が崩れないなら
void a2b(char *asc, byte *bin)
{
while (sscanf(asc, "%02X ", bin) == 1) {
asc+=3 ;
bin++ ;
}
}
なんて言うのもありですね。
実現方法はhappy_peopleさんのコードの方が綺麗かな。
("+=3"っていう部分が自分できらい!)
実現方法自体は複数あるのでどうでも良いのですが…。
> happy_peopleさん
ANSI-CではHosted Emvironmentにおいて
・main関数はint型の値を返す
・main関数は0個または2個の引数を取る
と規定されています。
void main(int, char**, char**)
というのは問題ありのコードです。
また、Free Standing Emvironmentではstrtol()関数の存在を期待できません。
No.1
- 回答日時:
僕だけかもしれませんが、質問の意味がわかりません。
バイナリデータとは2進数のことなのに16進数?
文字をバイナリに変換?
もともと文字はデータで出来ているのですよ。
まったくバッググランドが見えないのですけれど。。
この回答への補足
すいません。説明不足&間違いです。
ちょっとうまく説明できないので例をあげます。
あるjpegファイルをLANでつないだ2台のマシンを使って一方から他方へコピーする間をパケットアナライザーで見るとします。このアナライザーは取ったパケットデータをテキストに出力します。このテキストデータを読み込んで、パケットヘッダなどの部分を削って画像データの部分だけを抜き出し、ファイルへ出力して元のjpegファイルを再生する、と言ったことをやりたいのです。(行為自体に深い意味はありません)
テキストから読み込んだデータは16進ダンプの表記になっていて、これをどうやってそのままのバイナリデータに変換したらいいか、というのが質問の趣旨です。
アドバイス頂けると幸いです。宜しくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Ruby 初心者プログラミング 3 2022/10/12 11:31
- その他(プログラミング・Web制作) awkの文字列比較はPOSIXロケールまたはCロケールにおいてバイナリ値の比較に使えるか gawkな 1 2023/04/22 09:21
- HTML・CSS WEBサイトの構築。表示データとWEBデザインを分離する考え方を専門用語・業界用語では何と言うか? 8 2022/09/27 09:16
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- Excel(エクセル) エクセルで沢山のレコードの最後に追記するには? 7 2023/04/10 13:27
- その他(データベース) 20万行あるデータを動かしたい 2 2023/06/13 15:21
- HTML・CSS GETをPOSTに変更したところ 送信 不能です。 1 2022/04/10 17:31
- その他(プログラミング・Web制作) プログラミング python pandas 固定長データの出力 2 2022/08/16 11:22
- Excel(エクセル) Excelで、別シートの表のステータスに伴った動的な自動転記をしたいです。 2 2023/06/14 15:56
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
バイナリファイルをテキストファイルに変換する方法を教えて頂けませんか。
C言語・C++・C#
-
テキストデータをバイナリデータに変換したい
C言語・C++・C#
-
C言語でテキストファイルをバイナリファイルに変換
C言語・C++・C#
-
-
4
バイナリデータ→ASCII 変換プログラム
C言語・C++・C#
-
5
【C言語】ファイルを読み込んで16進数で表示する
C言語・C++・C#
-
6
C言語でunsigned char配列を連結する方法ってありますか?
C言語・C++・C#
-
7
C言語での引数の省略方法
C言語・C++・C#
-
8
16進をASCIIコードに変換する手法
C言語・C++・C#
-
9
コマンド(例えばls)の出力結果を文字列で取得するプログラムの作成方法
C言語・C++・C#
-
10
C言語 バイナリファイルをfloatにしたいのですが…
C言語・C++・C#
-
11
表示イメージのままコピーできるバイナリエディター
その他(ソフトウェア)
-
12
C言語で今まで表示していた画面の消すには?
C言語・C++・C#
-
13
関数から配列を返すには?
C言語・C++・C#
-
14
SetWindowText関数について
C言語・C++・C#
-
15
CStringのFindで文字列検索を行いたいのですが
C言語・C++・C#
-
16
バイナリファイル中の日本語文字列の取り出し
C言語・C++・C#
-
17
fread関数および動的なメモリ確保について
C言語・C++・C#
-
18
カンマ区切りのデータを配列に読み込みたい
C言語・C++・C#
-
19
バイナリファイルの内容を、そのままテキストファイルに出力する方法
C言語・C++・C#
-
20
「fatal error C1189」を回避するには?
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
fgetsなどのときのstdinのバッ...
-
charでの計算?
-
atoi( ) の反対をやりたい
-
テキストデータをそのままバイ...
-
下記のプログラムがコンパイラ...
-
_TCHAR*での引数の読み込み
-
C言語のfor文です。 繰り返しの...
-
str系関数を使わずに二つの文字...
-
至急!C言語文字列置換
-
C言語の入力した文字を反転させ...
-
型変換
-
charからLPTSTRへの変換方法
-
strlen関数と同じ働きをする関...
-
'const char *' 型は 'char *' ...
-
C言語 ミリ秒を日付に変換には
-
文字列から空白を取り除きたい...
-
C言語 共用体について コマンド...
-
C言語 文字列操作
-
c言語プログラミング実行時エラ...
-
間接参照のレベルが異なっています
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
charからLPTSTRへの変換方法
-
charでの計算?
-
配列をnビットシフトする
-
'const char *' 型は 'char *' ...
-
型変換
-
テキストデータをそのままバイ...
-
文字列から空白を取り除きたい...
-
CStringをwchar_tに変換したい
-
絶対パスからのファイル名の切...
-
fgetsなどのときのstdinのバッ...
-
ネットワークにつながっている...
-
str系関数を使わずに二つの文字...
-
3桁区切(コンマ)記号をつけ...
-
atoi( ) の反対をやりたい
-
double型の値をchar配列に変換...
-
C言語のfor文です。 繰り返しの...
-
switch文で文字を比較すること...
-
ファイル名である文字列からbas...
-
c++ 文字列を入力して、一文字...
-
strncpyと_tcsncpy_sのヌルの扱...
おすすめ情報