字符串转整数

字符串转整数功能实现
博客介绍了将字符串转换成整数的功能实现,要求不能使用字符串转换整数的库函数。输入为包含数字、字母、符号的字符串,也可为空。若输入是合法数值表达则返回该数字,否则返回0。

题目描述

将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。

输入描述

输入一个字符串,包括数字字母符号,可以为空

输出描述

如果是合法的数值表达则返回该数字,否则返回0

class Solution {
public:
    int StrToInt(string str)
    {
        int len = str.size();
        int symble = 1;
        long long  ret = 0;
        if(!len)
            return 0;
        if(str[0] == '-')
            symble = -1;
        int i = (str[0] == '-' ||str[0] == '+')?1:0;
        for(;i<len;i++)
        {
            if(!('0'<=str[i] && str[i]<='9')  )
            return 0;
            ret=(ret<<1)+(ret<<3)+(str[i] & 0xf);;
        }
        return ret *symble;
    }
};
### Verilog 中将字符串换为整数的方法 在 Verilog 中,字符串本质上被解释为一系列的 ASCII 值组成的无符号整数。因此可以通过逐字节读取字符串并将其对应的 ASCII 值组合成一个完整的整数值来实现字符串整数换。 以下是具体的代码示例: ```verilog module str_to_int ( input wire [7:0] str_in [0:9], // 输入字符串数组,最大长度为10 output reg [31:0] int_out // 换后的整数输出 ); reg [31:0] temp; integer i; always @(*) begin temp = 0; // 初始化临时变量 for (i = 0; i < 10 && str_in[i] != 8'h0; i = i + 1) begin if ((str_in[i] >= 8'd48) && (str_in[i] <= 8'd57)) begin temp = temp * 10 + (str_in[i] - 8'd48); // 字符 '0' 的 ASCII 是 48 end else begin temp = 0; // 非法字符时清零 break; end end int_out = temp; // 将计算结果赋给输出端口 end endmodule ``` #### 解析 上述模块实现了从字符串整数换功能。具体逻辑如下: - **输入部分**:`str_in` 是一个由最多 10 个字节组成的字符串数组,每个字节存储单个字符的 ASCII 编码[^1]。 - **核心算法**:通过遍历 `str_in` 数组中的每一个字符,判断其是否属于有效的数字范围(即 `'0'` 到 `'9'`),如果是,则累加至临时变量 `temp` 中;如果遇到非法字符,则立即停止循环并将结果置为 0[^2]。 - **边界条件**:当检测到字符串结束标志 `\0` 或超出有效长度时终止循环[^1]。 此方法适用于简单的十进制字符串整数场景,并未涉及更复杂的科学计数法或其他基数表示形式[^4]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值