首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

char buff[4] ="123" ,存的是十进制的123 怎么取出来

2012-08-30 
char buff[4] 123,存的是十进制的123如何取出来charbuff[4] 123intx x *(int*)buff对么? 如何

char buff[4] ="123" ,存的是十进制的123 如何取出来
char buff[4] = "123"; 
int x ;

x= *(int*)buff;

对么 ? 如何用printf 打印 ?? 就是打印格式。

这样取出来的应该是 整型的 123 吧?

[解决办法]

C/C++ code
char buff[4] = "123"; int x = atoi( buffer );printf( "%d", x );
[解决办法]
你那样得到的是几个字符'123\0'的ascii码值组合,看它们在内存中的布局。
[解决办法]
别想当然好吗?
别自己发明语法好吗?
去查查书好吗?

在32位big-endian计算机上
“char buff[4] = "123"; ”这个语句声明的数组其内存为四个字节“0x31 0x32 0x33 0x00”
int型整数1的内存为四个字节“0x01 0x00 0x00 0x00”
int型整数2的内存为四个字节“0x02 0x00 0x00 0x00”
int型整数3的内存为四个字节“0x03 0x00 0x00 0x00”
int型整数123的内存为四个字节“0x7B 0x00 0x00 0x00”
你发明的什么语法能自动转换上面这些内存?
[解决办法]
如果不准用atoi之类的库函数,那么可以参考:
C/C++ code
int POW(int n)// 计算10的n次方{    int npower = 1;    for(int i = 0; i < n; ++i)    {        npower *= 10;    }    return npower;}int main(){    int number = 0;    char buff[4] = "123";     int len = strlen(buff);    for(int i = 0; i < len; ++i)    {        number += (buff[i] - '0') * POW(len - i - 1);    }    printf("%d\n", number);    return 0;} 

热点排行