[2進数]の検索結果
10進数を2進数文字列に変換する関数は前に作成してますが、逆に「1101」「10110000」などの2進数文字列を10進数の整数値に変換するC言語用の関数がなかったので作成してみました。
#include <stdio.h>
#include <string.h>
int bin2dec(char *src);
int main(void)
{
char binstr1[] = "1101"; /* 13 */
char binstr2[] = "10110000"; /* 176 */
char binstr3[] = "1000000100000000"; /* 33024 */
int dec = 0;
dec = bin2dec(binstr1);
printf("%s:%d(0x%02.2X)\n", binstr1, dec, dec);
dec = bin2dec(binstr2);
printf("%s:%d(0x%02.2X)\n", binstr2, dec, dec);
dec = bin2dec(binstr3);
printf("%s:%d(0x%02.2X)\n", binstr3, dec, dec);
return 0;
}
/* 2進数文字列を10進数に変換 */
/* 10000000 -> 128, 1000 -> 8, 1000000000000000 -> 32768 */
int bin2dec(char *src)
{
int dec = 0;
for (;;) {
if (*src == '1') {
dec |= 1;
}
src++;
if (!*src) {
break;
}
dec <<= 1;
}
return dec;
}
実行結果
$ ./bin2dec
1101:13(0x0D)
10110000:176(0xB0)
1000000100000000:33024(0x8100)
1バイト(8bit)の10進数を2進数の文字列に変換するコードのC言語版です。
C言語では、PerlやPHPなどのように2進文字列に変換してくれる便利な関数は関数はないので、ビット演算子を使ってビットのオン・オフを判定して、2進文字列を作成していくしかありません。
#include <stdio.h>
#include <string.h>
void dec2bin(char src, char *dest);
const int buf_size = 9;
int main(void)
{
char buf[buf_size]; /* 変換後の2進文字列を受け取るための領域 */
/* char str1[] = "abcdefg"; */
char str1[] = "あいうえお";
char *cp;
int num = 1;
for (cp = str1; *cp; cp++) { /* 文字数分処理 */
memset(buf, '\0', sizeof(buf));
dec2bin(*cp, buf);
printf("%d:%s (0x%02.2X)\n", num, buf, 0x000000ff & *cp);
num++;
}
return 0;
}
/* 1Byte(8bit)の10進数を2進数の文字列に変換 */
void dec2bin(char src, char *dest)
{
const int bit_size = 8;
int i;
for (i = 0; i < bit_size; i++) {
dest[i] = (0x80 & src) ? '1' : '0';
src <<= 1;
}
}
解きながら学ぶC言語
ソフトバンククリエイティブ 著者:柴田 望洋,肘井 真一,高木 宏典,赤尾 浩
amazon.co.jpのカスタマーレビューを見る
powered by amalink
PHPの場合は、ズバリ10進数を2進文字列に変換できるdecbin関数があるので、decbin関数を使用すればいいのですが、 もちろん、Perlの場合と同様にビット演算で2進文字列に変換することもできます。以下は、そのサンプルコードです。
このスクリプトをコマンドラインで実行すると次のように表示されます。
C:\xampp\htdocs\sample>\xampp\php\php binstr.php
01000001 (1)
01000001 (2)
PHPハンドブック (ハンドブックシリーズ)
ソフトバンククリエイティブ 著者:柏岡 秀男
amazon.co.jpのカスタマーレビューを見る
powered by amalink
1
アクセスランキング
今日のアクセスランキング TOP 10
- SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (23 PV)
- Fayray(フェイレイ)/ひとりよりふたり(芋たこなんきんの主題歌) (12 PV)
- 究極の爆益ゴールドナンピンマーチンEA「Extreme(エクストリーム)」 MT4向け (11 PV)
- 日本政府がやっと北朝鮮が核ミサイルを打ち込んできた場合の避難方法を公開 (11 PV)
- コインチェック、日本円出金を13日に再開すると発表 (10 PV)
- 「国家非常事態」トランプ米大統領が日本に24%の関税を課すと表明 日経平均株価が急落 (10 PV)
- WordPressカスタマイズログ (10 PV)
- 無料掲示板CGIのダウンロード (10 PV)
- 質屋アプリ「CASH(キャッシュ)」がサービス再開 (10 PV)
- 予想外のシステム障害でソフトバンクモバイルが登録業務停止 (10 PV)
今月のアクセスランキング TOP 10
- SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (209 PV)
- 無料掲示板CGIのダウンロード (91 PV)
- 自作のMT4向け無料EA(口座縛り無し、ブローカー縛り無し、使用期限無し)とゴゴジャン出品中の有料EAの一覧 #MT4 (49 PV)
- 究極の爆益ゴールドナンピンマーチンEA「Extreme(エクストリーム)」 MT4向け (48 PV)
- USTREAM(ユーストリーム) 日本語版 無料のライブ映像配信サービス (45 PV)
- 「国家非常事態」トランプ米大統領が日本に24%の関税を課すと表明 日経平均株価が急落 (42 PV)
- 究極の爆益ゴールドナンピンマーチンEA「Extreme MT5」 (39 PV)
- 仲値トレードが簡単にできる無料EA「NAKANE3 Ver 2.04」 #MT4 (37 PV)
- 安全性重視の完全無料ナンピンマーチンEA「Million Dollar(ミリオンダラー)」 #FX #ゴールド #ビットコイン (34 PV)
- 裁量トレードを半自動化する無料のMT5向け裁量トレード支援ツール(裁量補助EA)「PositionKeeper MT5」 #FX (32 PV)
アクセス統計
ディレクトリ
関連サイト