如何提取条形码中指定位置的数字?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
相关产品推荐
相关产品推荐

