開発環境 |
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