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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- C言語・C++・C# int temp = 0; if(isdigit(arr[i])){//文字が数字であれば(0~9) 1 2022/03/27 01:37
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- C言語・C++・C# 至急教えてください! プログラミングの問題です! お願いします! 出力2と全く同じ出力をするように、 2 2022/06/22 23:10
- C言語・C++・C# c言語 int temp = 0; if(isdigit(arr[i])){ temp=arr[i] 2 2022/03/27 01:44
- Visual Basic(VBA) VBA B列にある前から10文字のみ表示 3 2023/08/07 11:24
- Visual Basic(VBA) VBAで、特定の文字より後を削除して残った数値を文字列に変換と特定の文字より前も削除したい 3 2022/04/15 19:21
このQ&Aを見た人はこんなQ&Aも見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
c言語 16進数の2進数への変換
C言語・C++・C#
-
16進数を10進数に簡単に変換する関数は?
C言語・C++・C#
-
printf で二進表示を行いたい。
C言語・C++・C#
-
-
4
str系関数を使わずに二つの文字を結合する方法
C言語・C++・C#
-
5
文字列から空白を取り除きたいのですが
C言語・C++・C#
-
6
構文エラー;"が型の前にありませんとは、どうしたら解決できるのですか。"
C言語・C++・C#
-
7
C言語初心者 構造体 課題について
C言語・C++・C#
-
8
C言語初心者です、、、お助けください
C言語・C++・C#
-
9
C言語で構造体のメンバを簡単に出力する方法ありますか?
C言語・C++・C#
-
10
HEWを使用しているのですが、このようなエラーが出ました。
C言語・C++・C#
-
11
c言語でAからZまでを表示するプログラム
C言語・C++・C#
-
12
プログラミングが分かりません。
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelのセルの色指定をVBAから...
-
array関数で格納した配列の型を...
-
ExcelのINDEXとMATCH関数でスピ...
-
エクセルで、絶対値の平均を算...
-
[エクセル]連続する指定範囲か...
-
配列のSession格納、及び取得方...
-
[VBA]改行入りのセルの値を配列...
-
表にフィルターをかけ、絞った...
-
DataSetから、DataTableを取得...
-
VBA listBoxについて
-
iniファイルのキーと値を取得す...
-
配列がとびとびである場合の書き方
-
Split関数でLong配列に格納する...
-
エクセルの行の削除を配列で高...
-
エクセル 条件を指定した標準...
-
VB6.0 ファイルの一括読込み
-
構造体を使った時刻表(C)
-
SUMPRODUCT関数を用いた最小値
-
【VBA】ユーザーフォーム リス...
-
文字列の検索と比較
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelのセルの色指定をVBAから...
-
array関数で格納した配列の型を...
-
ExcelのINDEXとMATCH関数でスピ...
-
[エクセル]連続する指定範囲か...
-
エクセルで、絶対値の平均を算...
-
VBA listBoxについて
-
配列がとびとびである場合の書き方
-
表にフィルターをかけ、絞った...
-
VBA 配列に格納した値の平均の...
-
[VBA]改行入りのセルの値を配列...
-
エクセルでエラーを無視して一...
-
iniファイルのキーと値を取得す...
-
二次元配列の中の各行の要素を...
-
SUMPRODUCT関数を用いた最小値
-
【VBA】ユーザーフォーム リス...
-
Split関数でLong配列に格納する...
-
【VBA】配列に数式を仕込む方法...
-
.NET - 配列変数を省略可能の引...
-
スプレットシートのGetTextにつ...
-
Excelのオートフィルタで抽出し...
おすすめ情報