为什么我的 ASCII 字符到 int 转换失败
本文关键字:int 转换 失败 字符 我的 ASCII 为什么 | 更新日期: 2023-09-27 18:30:55
根据这里的图表:
http://www.idautomation.com/barcode-faq/code-128/
这个角色:
Ë
等于值 103。
然而,这段代码:
string barcode = textBoxRawCode128.Text.Trim();
. . .
int runningTotal = ConvertToASCIIInt(barCode[0]);
. . .
private int ConvertToASCIIInt(char valToConvertToASCII)
{
const int ASCII_ADJUSTMENT_VAL = 32;
return valToConvertToASCII - ASCII_ADJUSTMENT_VAL;
}
。当文本框中的值和条形码的值是"Ët 另一个字符串"时,因此条形码 [0] 是"Ë",返回值 171 而不是 103...???
根据这个图表:http://www.adams1.com/128table.html,对应于 103 的值是 ‡,但是当我将 barCode 设置为"‡尝试另一个字符串"时,返回值是 8193...???越来越好奇...
注意:相关/初步帖子是 这个用于计算 Code128 条形码校验位的代码是否正确?
实际上您显示的字符的值为 Ë
= 203
。小g
是具有 ascii 值103
的字符。
因此203 - 32 = 171
.
参考
,要找到代码 128 符号的正确数字,您必须减去 32,因此要获得代码 128 符号 103 的 ASCII 值,您必须加上 32,得到 135,这不是 7 位 ASCII。亚当斯说得对,但由于它是"高ASCII",所以你会陷入代码页的混乱。因此,根据PC的语言以及接触字符串的应用程序是否使用DBCS或Unicode或8位ASCII,您可能会发现不同的字符,因为国际标准不同。Russ Adams 给出的字符可以在 Windows 字符映射应用程序中调出小字体字体。查看"0x87"下的字符,该字符是十进制中的 135。
IDAutomation人员使用自己的算法根据您输入的字母得出条形码字符,因此,如果他们说他们需要"Ë"才能获得103,那么这就是他们所需要的。"Ë"并不等同于103,它只是让他们的软件咳出103的原因。这一切都是为了解决从数字 7 位标准到供应商生产柱的方法的转换。
可悲的是,不同的符号系统不使用相同的算法来编码数据或派生校验和,因此每种条形码类型都必须有自己的软件。