假设我有char array[10]
和[0] = '1'
,[1] = '2'
,[2] = '3'
等。
如何使用C?
从这些索引创建(int) 123
我希望在一个仅限于2kb SRAM的arduino板上实现这一点。足智多谋效率是关键。
感谢Sourav Ghosh,我用自定义函数解决了这个问题:
long makeInt(char one, char two, char three, char four){
char tmp[5];
tmp[0] = one;
tmp[1] = two;
tmp[2] = three;
tmp[3] = four;
char *ptr;
long ret;
ret = strtol(tmp, &ptr, 10);
return ret;
}
答案 0 :(得分:4)
我认为你需要知道的是strtol()
。阅读详情here。
引用基本部分
long int strtol(const char *nptr, char **endptr, int base);
strtol()
函数会根据给定的nptr
将long int
中字符串的初始部分转换为base
eger值,该值必须介于{{1}之间}和2
包含,或者是特殊值36
。
答案 1 :(得分:2)
int i = ((array[0] << 24) & 0xff000000) |
((array[1] << 16) & 0x00ff0000) |
((array[2] << 8) & 0x0000ff00) |
((array[3] << 0) & 0x000000ff);
这应该有效
答案 2 :(得分:2)
如果您没有strtol()
或atoi()
可用的库,请使用此代码:
int result = 0;
for(char* p = array; *p; )
{
result += *p++ - '0';
if(*p) result *= 10; // more digits to come
}