You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何提取条形码中指定位置的数字?C#代码调试求助

解决C#提取条形码指定位置数字的问题

你遇到的核心问题是:barcode[num]返回的是char类型,直接赋值给int时会自动转换为对应的ASCII码值(比如'1'对应49,'0'对应48),所以调试时看到的是ASCII码而非目标数字。

以下是两种符合需求的修正方案:

方案1:提取数字字符并拼接成目标格式

如果需要得到类似1 0 0 0 0 1的字符串结果,直接保留字符类型即可:

private string checkDigit(string barcode)
{
    List<char> targetDigits = new List<char>();
    // 遍历偶数索引位置(从0开始,步长2)
    for (int num = 0; num < barcode.Length; num += 2)
    {
        targetDigits.Add(barcode[num]);
    }
    // 用空格拼接成结果字符串
    return string.Join(" ", targetDigits);
}

方案2:提取数字的整数值(适合后续计算)

如果需要将字符转换为对应的整数(比如1、0而非'1'、'0'),可以通过两种方式转换:

private string checkDigit(string barcode)
{
    List<int> digitValues = new List<int>();
    for (int num = 0; num < barcode.Length; num += 2)
    {
        // 方式1:使用char.GetNumericValue转换
        int value = (int)char.GetNumericValue(barcode[num]);
        // 方式2:减去'0'的ASCII码(更高效)
        // int value = barcode[num] - '0';
        digitValues.Add(value);
    }
    return string.Join(" ", digitValues);
}

补充说明

  • 原代码存在两个问题:方法声明返回string但无返回语句,OddNumSum变量未使用,修正后的代码已解决这些问题;
  • 两种方案都能满足你提取指定位置数字的需求,可根据后续是否需要计算来选择。

内容的提问来源于stack exchange,提问作者devChing

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 23:53:12