R语言 里面怎么把一个数转换为二进制的0,1串,比如5=101,

Python014

R语言 里面怎么把一个数转换为二进制的0,1串,比如5=101,,第1张

先说简单的,有一个叫strtoi()的函数

# 如果直接写

> strtoi("111")

[1] 111

# 如果加base = 2,就是告诉R要换成十进制

> strtoi("111", base = 2)

[1] 7

反过来就有些麻烦,R自带intToBits()函数,但效果不好,要自己调整

> intToBits(12)

[1] 00 00 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 

[25] 00 00 00 00 00 00 00 00

12换成二进制是1100,上面答案实际上是反过来读,三四位是11,其余都是0.

paste(rev(as.integer(intToBits(12))), collapse="")

[1] "00000000000000000000000000001100"

如果不能解决这个问题,那么Windows Update会彻底悲剧,然后ESET就受不了了,天天给你“发光”

这个问题很有可能是因为COM+ Event System服务不正常的缘故,可以通过检查注册表来确定

(注:本文所说的解决方法适用的操作系统是Windows Vista\Windows7)操作步骤:

Windows+R组合键,打开运行,输入regedit,打开注册表编辑器,找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services,检查下面有没有Event

System项,如果没有,那么问题就找到了,是因为COM+ Event

System没有安装的缘故,那么现在你必须要启动这项服务。

操作步骤:找一台更新没有问题的电脑(Windows Vista\Windows

7),按上面步骤打开注册表编辑器,找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Event

System,然后右击左边列表Event

System项,导出注册表,保存路径没有要求,命名任意,如xxx.reg,让后转到本机上。

下面需要在本机上导入注册表文件xxx.reg,双击即可运行,如果双击是记事本打开,那么需要设置打开程序regedit.exe,方法是右击xxx.reg,属性\常规\更改\浏览,在C:\Windows下搜到regedit.exe,然后点击打开,回到更改对话框,确定,回到属性对话框,确定,然后再次双击xxx.reg即可,系统会提示相应的注册表值加入到了系统注册表中,此时基本操作完成。

下面启动COM+ Event System和BITS服务,正确完成以上步骤COM+ Event

System服务已经开启,现在需要确认,并且开启BITS服务。

# include <stdio.h>

# include <math.h>

# define R0 2 //表示二进制

void tran(int m, int r, char str[], int *n)

{

char sb[]="0123456789ABCDEF"

int i=0,g

do{

g=m%r

str[i]=sb[g]

m=m/r

i++

}while(m!=0)

*n=i

}

void main()

{

int x

int i

int n

int bits

char a[50]

printf("输入位数bits:\n")

scanf("%d",&bits)

for(x=0x<(int)pow(R0,bits)x++)

{

tran(x,R0,a,&n)

for(i=0i<bits-ni++)

{

printf("0")

}

for(i=n-1i>=0i--)

{

printf("%c",a[i])

}

printf("\n")

}

}

或者:

# include <stdio.h>

# include <math.h>

# define R0 2 //表示二进制

void main()

{

int i

int j

int n=0

int bits

int temp

int a[20]={0}

printf("输入位数:\n")

scanf("%d",&bits)

for(i=0i<(int)pow(R0,bits)i++)

{

temp=i

for(n=0n<bitsn++)

{

a[n]=temp%2

temp=temp/2

}

for(j=bits-1j>=0j--)

{

printf("%d",a[j])

}

printf("\n")

}

}