0

根据这里的图表:

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;
}

...当文本框中的值和条码的值为“ËTry another string.”时,因此 barcode[0] 为“Ë”,返回值 171 而不是 103...???

并且根据这张图表: http: //www.adams1.com/128table.html,103对应的值为‡,但是当我将barCode设置为“‡Try another string.”时,返回值为8193 ... ???越来越好奇...

注意:相关/初步帖子是此代码用于计算 Code128 条形码校验位是否正确?

4

2 回答 2

4

实际上,您显示的字符具有Ë=的值203。小g是具有 ascii 值的字符103

因此203 - 32 = 171

参考

于 2013-09-11T19:07:05.783 回答
1

请记住,要找到 Code 128 符号的正确数字,您必须减去 32,因此要获得 Code 128 符号 103 的 ASCII 值,您必须添加 32,得到 135,而不是 7 位ASCII。Adams 说得对,但由于它是“高 ASCII”,因此您会陷入混乱的代码页。因此,根据 PC 的语言以及如果接触字符串的应用程序使用 DBCS 或 Unicode 或 8 位 ASCII,您可能会发现不同的字符,因为国际标准不同。如果您在 Windows Character Map 应用程序中调出 Small Fonts 字体,就可以找到 Russ Adams 给出的字符。查看“0x87”下的字符,它是十进制的 135。

IDAutomation 人员正在使用他们自己的算法根据您输入的字母得出条形码字符,所以如果他们说他们需要一个“Ë”来获得 103,那么这就是他们所需要的。'Ë' 不等于 103,这只是让他们的软件咳出 103 的原因。这一切都是为了解决从数字 7 位标准到供应商生产棒材的方法的转换。

遗憾的是,不同的符号体系不使用相同的算法来编码数据或导出校验和,因此每种条形码类型都必须有自己的软件。

于 2013-09-11T23:25:01.267 回答