为什么我的 ASCII 字符到 int 转换失败



根据这里的图表:

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 位标准到供应商生产柱的方法的转换。

可悲的是,不同的符号系统不使用相同的算法来编码数据或派生校验和,因此每种条形码类型都必须有自己的软件。

相关内容

  • 没有找到相关文章

最新更新