char buff[4] ="123" ,存的是十进制的123 如何取出来
char buff[4] = "123";
int x ;
x= *(int*)buff;
对么 ? 如何用printf 打印 ?? 就是打印格式。
这样取出来的应该是 整型的 123 吧?
[解决办法]
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之类的库函数,那么可以参考:
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;}