[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
- いかにんじん(イカ人参) (1 PV)
- バレンタインデー(Valentine's Day) #チョコレート (1 PV)
- 米中貿易戦争激化、米国の新たな関税措置に対し中国も報復措置を発表 #米国債売却 (1 PV)
- OSSオープン・ラボ (1 PV)
- Twitter(ツイッター)- マイクロブログ (1 PV)
- グロービス、ビジネスパーソン向け経営情報提供サイト「GLOBIS.JP」を開設 (1 PV)
- 質屋アプリ「CASH(キャッシュ)」がキャッシュ化殺到で開始から16時間34分で査定停止に追い込まれる #炎上 (1 PV)
- インフラただ乗り論 (1 PV)
- Webサイト (1 PV)
- Macのシェアは伸びるか? (1 PV)
今月のアクセスランキング TOP 10
- 2%のインフレターゲットとは (101 PV)
- テクノラティがブログのタグ検索を開始 (92 PV)
- 仲値トレードが簡単にできる無料EA「NAKANE3」 #MT4 (79 PV)
- [PR]noteで販売している自作EAの一覧 (63 PV)
- 自作のMT4向け無料EA(口座縛り無し、ブローカー縛り無し、使用期限無し)とゴゴジャン出品中の有料EAの一覧 #MT4 (57 PV)
- MT4向け1ポジアノマリーEA「DAY TRADING」 オープンソースライセンス(GPL3) #ドル円 (55 PV)
- MT4向け1ポジブレイクアウトEA「HEADLINE」オープンソースライセンス(GPL3)で公開 #USDJPY (55 PV)
- ドル円(USDJPY)で爆益を狙うハイリスクハイリターンのMT4向けナンピンマーチンEA「Hyper Dollar」 (53 PV)
- Google Maps(グーグルマップ)日本版 - 地図検索、ルート検索 (53 PV)
- 安全性重視の完全無料ナンピンマーチンEA「Million Dollar(ミリオンダラー)」 #FX #ゴールド #ビットコイン (49 PV)
アクセス統計
ディレクトリ
関連サイト


