#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 将 n 以二进制串存到 str
char* DtoB(char *str, unsigned long n)
{
int i;
unsigned long m = 0x80000000;
for(i = 0; i < 32; ++i)
{
str[i] = (m & n) ? '1' : '0';
m >>= 1;
}
str[32] = '\0';
return str;
}
// 从二进制串中读数
unsigned long BtoD(char *str)
{
int i;
unsigned long m;
unsigned long n = 0;
int len = strlen(str);
if (len > 32)
len = 32;
m = 0x80000000 >> (32 - len);
for(i = 0; i < len; ++i)
{
if (str[i] == '1') // 非法字符认作 0
n |= m;
m >>= 1;
}
return n;
}
void main()
{
char str[32];
cout<<BtoD("1010101001")<<endl;
cout<<DtoB(str, 122111111111111)<<endl;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 将 n 以二进制串存到 str
char* DtoB(char *str, unsigned long n)
{
int i;
unsigned long m = 0x80000000;
for(i = 0; i < 32; ++i)
{
str[i] = (m & n) ? '1' : '0';
m >>= 1;
}
str[32] = '\0';
return str;
}
// 从二进制串中读数
unsigned long BtoD(char *str)
{
int i;
unsigned long m;
unsigned long n = 0;
int len = strlen(str);
if (len > 32)
len = 32;
m = 0x80000000 >> (32 - len);
for(i = 0; i < len; ++i)
{
if (str[i] == '1') // 非法字符认作 0
n |= m;
m >>= 1;
}
return n;
}
void main()
{
char str[32];
cout<<BtoD("1010101001")<<endl;
cout<<DtoB(str, 122111111111111)<<endl;
}