
No.3ベストアンサー
- 回答日時:
即席ですが。
ctype.hとかstdlib.hとか要ると思います。戻り値>=0で正常終了。その場合は書き込まれた長さ(使った配列の要素数)が返ります。
int hexToBinary(char* src, int* dest) {
char c;
int x, i;
char* p = src;
while(*p != NULL) {
c = tolower(*p);
if (isdigit(c)) {
x = c - '0';
} else if (c >= 'a' && c <= 'f') {
x = c - 'a' + 10;
} else {
return -1;
}
for (i=0; i<4; i++,x>>=1) {
dest[3-i] = x & 1;
}
p++;
dest+=4;
}
return (p-src)*4;
}
No.2
- 回答日時:
16進数は当然16パターンしかないわけですから、1文字ずつそのパターンにあわせて変換していってはどうでしょうか?
1は0,0,0,1 2は0,0,1,0 3は0,0,1,1・・・という具合に。
でint型の配列を4ずつ進ませて書き込んでいくってのは駄目ですか?
No.1
- 回答日時:
int配列への格納の仕方が桁数固定なのか可変なのか、
およびリトルエンディアンなのかビッグエンディアンなのか(下の桁を配列の前に格納するか後ろに格納するか)で
コードの書き方には差が出ますので、概略のみ書きます。
2^4=16ですから、16進数1桁が2進数4桁に対応することに注意します。
文字列から1文字を読み込み、
・数字であれば'0'を引く
・英字であれば小文字に直してから'a'を引き、10を足す。
とすれば、数値として0~15になります。
この数値をxと書きます。
x&1で最下位ビットの状態が得られるので、これをint型配列に格納します。
さらにx>>=1とし、再び最下位ビットを得て格納、...を4回行います。
次の文字を読み込み、同様に処理します。
というような手順になります。
次の変換のうち、どれをやりたいのかを提示していただければより具体的な回答が得られるかと思います。
例:"1d"の変換として、どれを得たいのか
1.{0,0,0,1,1,1,0,1}
2.{1,1,1,0,1}
3.{1,0,1,1,1,0,0,0}
4.{1,0,1,1,1}
回答ありがとうございます。アンド演算とシフト演算のところはよくわかりました。助かります。
例は、1番の形でお願いします。
あと、
・数字であれば'0'を引く
・英字であれば小文字に直してから'a'を引き、10を足す。
というところがどのようにすればいいのかよくわかりません。できれば、もう少し詳しくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
教えて!gooグレードポイントがdポイントに変わります!
dアカウント連携を行っていただくと、グレードに応じて「dポイント」が進呈されるようになります。
-
c言語 16進数の2進数への変換
C言語・C++・C#
-
16進数を10進数に簡単に変換する関数は?
C言語・C++・C#
-
C言語で16進数文字列から16進数数値への変換
C言語・C++・C#
-
4
str系関数を使わずに二つの文字を結合する方法
C言語・C++・C#
-
5
16進数を10進数文字列に変換する
C言語・C++・C#
-
6
16進数を2文字ずつ配列に格納したい
C言語・C++・C#
-
7
printf で二進表示を行いたい。
C言語・C++・C#
-
8
C言語 配列の長さの上限
C言語・C++・C#
-
9
改行を読み飛ばす
C言語・C++・C#
-
10
char型配列の最大要素数
C言語・C++・C#
-
11
2の補数を計算するプログラム
C言語・C++・C#
-
12
while文について、c言語です。
C言語・C++・C#
-
13
C言語で、数値の桁数を求めるには??
C言語・C++・C#
-
14
テキストデータをそのままバイナリへ
C言語・C++・C#
-
15
再起呼び出しの回数をカウントするプログラム
C言語・C++・C#
-
16
16進数の表し方について
その他(コンピューター・テクノロジー)
-
17
charと%c , %s の関係について
C言語・C++・C#
-
18
正負を反転させて出力するプログラム
C言語・C++・C#
-
19
int型からchar型への変換
C言語・C++・C#
-
20
Enterキーを押されたら次の処理に移るという事をしたい。
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
Dictionaryを使い4つの条件の一...
-
5
リストボックスの列見出し(Exc...
-
6
【VBA】 動的な変数(定数)の指定
-
7
VBA-読み込んだテキストフ...
-
8
空白への0入力 二次元配列(VBA)
-
9
ExcelのINDEXとMATCH関数でスピ...
-
10
配列がとびとびである場合の書き方
-
11
Excel オートフィルタのリスト...
-
12
エクセル 条件を指定した標準...
-
13
エクセルで、絶対値の平均を算...
-
14
VB6・Split関数・連続した空白...
-
15
VBAでの100万行以上のデータの...
-
16
配列のSession格納、及び取得方...
-
17
SUMPRODUCT関数を用いた最小値
-
18
Excelのセルの色指定をVBAから...
-
19
16進数から2進数へ
-
20
Excelのオートフィルタで抽出し...
おすすめ情報
公式facebook
公式twitter