怎么把数组转换成整数?
char buffer[4];
int code;
buffer是从二进制文件读进来的字符串数组。
想转换成int该怎么办?
问题点数:30、回复次数:11Top
1 楼badguy2002(风一样的男孩)回复于 2003-12-02 17:57:22 得分 0
atoi(buffer)Top
2 楼keiven()回复于 2003-12-02 18:49:41 得分 0
atoi(buffer) ;Top
3 楼bonmarshal(蚂蚁)回复于 2003-12-02 18:49:48 得分 10
如果你的buffer的内容形如 buffer[4] = {"1","2","3","4"};
则用atoi(buffer)即可。
int code = atoi (buffer);
则 code=1234;
如果你的buffer的内容不是这个类型的则需要自己转换(如你所说的二进制文件读取,我认为你应用此法);
code = 16777216*buffer[0]+65536*buffer[1]+256*buffer[2]+buffer[3];
Top
4 楼solarsoft(黑鹰)回复于 2003-12-02 18:56:25 得分 0
char buffer[4];
int code;
char* p=buffer;
code=(int)*p++;
这样不知道可不可以Top
5 楼dogdogdog(狗狗)回复于 2003-12-03 10:32:12 得分 0
蚂蚁的办法可行。
就是计算量太大了。
有没有更简捷的办法呢?Top
6 楼timepalette(时间调色板)回复于 2003-12-03 12:07:01 得分 0
code = *(int *)buffer
或code = ntohl(*(int *)buffer);
看怎么定义了Top
7 楼flinming(flinming)回复于 2003-12-03 12:22:46 得分 0
atoiTop
8 楼checkyvc6(已所不欲,勿施于人)回复于 2003-12-03 12:48:32 得分 20
code = buffer[0]<<16 | buffer[1]<<8 | buffer[2]<<4 | buffer[3];
这样应该不慢了吧Top
9 楼dogdogdog(狗狗)回复于 2003-12-03 13:25:42 得分 0
为什么打印出来的buffer[i]有时会出现许多fffff在前面。
例如,
TRACE("%x",buffer[0]);
如果值为B5的话,打印出来就是ffffffb5。
请问该怎么办?Top
10 楼weasea(尘一笑)回复于 2003-12-03 14:10:34 得分 0
mark一下Top
11 楼dogdogdog(狗狗)回复于 2003-12-03 14:14:28 得分 0
checkyvc6的想法很好,但是应该这样
code = buffer[0]<<24 | buffer[1]<<16 | buffer[2]<<8 | buffer[3];
而且发现应该使用 unsigned charTop




