可以将十进制的数直接赋给16进制的数吗?

如题所述

计算机里存的都是二进制数,可以把类型一致的任何形式的数赋给变量,
也就是如果你的十进制表示的和十六进制表示的都是整型变量,是可以相互赋值的,
另外纠正你一个错误,不是把十进制“数”赋给十六进制“数”,应该是赋给变量。。。因为数是不能被赋值的
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-02-13
计算机只认识2进制数
你的意思是只可以直接把10进制转换成16进制吗?追问

如果d为十进制,x为16进制,可以这样赋值吗?
x=d;

追答

那你这个d 和x 是怎么定义的呢?

没有16进制和10进制的定义方法啊

追问

goose1[140]=(sqnum&0xff000000)>>24;
goose1[141]=(sqnum&0x00ff0000)>>16;
goose1[142]=(sqnum&0x0000ff00)>>8;
goose1[143]=sqnum&0x000000ff;
lantransmit2(goose1,length);
sqnum++;
我的程序是这样的,赋值语句根本不起作用,我可以看到sqnum的值一直在变化,而goose1[143]、goose1[142]、goose1[141]、goose1[140]的值一直没有变化?你看哪有问题?我定义:int sqnum;
char goose1[];

追答

sum 的初始值是多少?

void main(){
int goose1 [5]={0},sqnum=0;//初始为0
printf("%d\n",sizeof(int));//4字节的int

//sqnum=0x00000000 sqnum&0xff000000 = 0x00000000 >>24 =0x00000000
goose1[0]=(sqnum&0xff000000)>>24; // 结果是0
sqnum++;
printf("%d ,%d\n",goose1[0],goose1[1]);

//sqnum=0x00000001 sqnum&0x00ff0000 = 0x00000000>>16 =0x00000000
goose1[1]=(sqnum&0x00ff0000)>>16;
sqnum++;
printf("%d ,%d\n",goose1[1],goose1[2]);

//sqnum=0x00000002 sqnum&0x0000ff00 = 0x00000000>>8 =0x00000000
goose1[2]=(sqnum&0x0000ff00)>>8;
sqnum++;
printf("%d ,%d\n",goose1[2],goose1[3]);
//sqnum=0x00000003 sqnum&0x000000ff = 0x00000003
goose1[3]=sqnum&0x000000ff;
printf("%d \n",goose1[3]);

}

相似回答