c - 如何使用位操作将 char 数组 [example 42] 转换为 int equivilant [int 42]?

标签 c arrays string bit-manipulation

假设我有一个字符串 42\0 0b0011010000110001000000000 [或一个没有空终止符的数组 42 0b00110100001100010],我想通过位操作将其转换为 42 0b00101010。我该怎么做?

最佳答案

简而言之,如果不检查数字是数字、负数还是超出范围,您可以这样做:

int myatoi( const char * s )
{
    int result = 0;
    while( *s )
    {
        result <<= 1;
        result += (result << 2);
        result += (*s++ & 0x0f);
    }
    return result;
}

警告:加法的使用并不严格满足通过位运算实现的要求。

关于c - 如何使用位操作将 char 数组 [example 42] 转换为 int equivilant [int 42]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31396401/

相关文章:

c - 不使用库函数的c中字符串的回文

c - 从文件读取以创建数组扫雷代码

c - 使用指针变量分配数组元素值时,第三个数组元素不会打印出来

java - 根据字符串大小(长度)对字符串数组进行排序

c - 如何使用简单的语句描述有关C语言中函数 'sprintf'的重复格式说明符?

C/XC8 语法 : Can invert and AND operation be used in the same statement?

c - 打印出用户选择的两个不同年份之间的天数的程序有困难

Javascript 数组包含多个包含多个对象的数组

php - 使用子数组中的值将多维数组转换为单维数组

c - Golang 的字符串和 C Char* 转换为 For Range 时出现内存问题,退出状态 3221226356