開発環境 Microsoft Visual C++ 2010 Express (SP1)
実行環境 Microsoft Windows XP Home Edition (SP3)
プロジェクトの種類 Win32 コンソール アプリケーション
プロジェクト名 test
アプリケーションの種類 コンソール アプリケーション
追加のオプション 空のプロジェクト

bdump1.c
#include <stdio.h>
 
char *bdump(char *dest, const void *src, size_t count)
{
	char *d = dest;
	char *s;
	int i;
 
	if (count == 0) {
		*d = '\0';
		return dest;
	}
	for (s = (char *)src; ; s++) {
		for (i = 7; i >= 0; i--) {
			*d++ = (*s & (1 << i)) ? '1' : '0';
			if (i == 4) *d++ = '.';
		}
		if (--count == 0) break;
		*d++ = ' ';
	}
	*d = '\0';
	return dest;
}
 
int main()
{
	char dest[80];
	int i = 0x01234567;
	double d = 1.5;
 
	bdump(dest, &i, sizeof i);
	printf("[%s]\n", dest);
	bdump(dest, &d, sizeof d);
	printf("[%s]\n", dest);
	return 0;
}
 

出力
[0110.0111 0100.0101 0010.0011 0000.0001]
[0000.0000 0000.0000 0000.0000 0000.0000 0000.0000 0000.0000 1111.1000 0011.1111]



bdump2.c
#include <stdio.h>
 
void bdump(const void *src, size_t count)
{
	char *s;
	int i;
 
	if (count == 0) return;
	for (s = (char *)src; ; s++) {
		for (i = 7; i >= 0; i--) {
			putchar((*s & (1 << i)) ? '1' : '0');
			if (i == 4) putchar('.');
		}
		if (--count == 0) break;
		putchar(' ');
	}
	putchar('\n');
}
 
int main()
{
	int i = 0x89abcdef;
	double d = 3.0;
 
	bdump(&i, sizeof i);
	bdump(&d, sizeof d);
	return 0;
}
 

出力
1110.1111 1100.1101 1010.1011 1000.1001
0000.0000 0000.0000 0000.0000 0000.0000 0000.0000 0000.0000 0000.1000 0100.0000
最終更新:2012年09月04日 10:53