根据这里的图表:
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;
}
...当文本框中的值和条形码中的值为“Ë尝试另一个字符串。”,因此条形码[0]为“Ë”时,返回值171而不是103 ... ??? < / p>
根据这个图表:http://www.adams1.com/128table.html,对应于103的值是‡,但是当我将barCode设置为“‡尝试另一个字符串。”时,返回的值是8193 ...... ??? Curiouser和curiouser ......
注意:相关/初步帖子为Is this code for calculating Code128 barcode check digits correct?
答案 0 :(得分:4)
答案 1 :(得分:1)
请记住,为了找到Code 128符号的正确数字,你必须减去32,因此要获得Code 128符号103的ASCII值,你必须添加32,给你135这不是7位ASCII。亚当斯是正确的,但由于它是“高ASCII”,你会陷入混乱的代码页。因此,根据PC的语言,如果触摸字符串的应用程序使用DBCS或Unicode或8位ASCII,您可能会发现不同的字符,因为国际标准不同。如果您在Windows角色地图应用程序中调出小字体类型,则可以找到Russ Adams给出的字符。查看“0x87”下的字符,即十进制的135。
IDAutomation人正在使用他们自己的算法根据你喂它的字母到达条形码字符,所以如果他们说他们需要'Ë'来获得103,那就是他们需要的。 “Ë”并不等同于103,它只是让他们的软件咳出103.这就是解决从数字7位标准到供应商生产棒的方法的问题。
可悲的是,不同的符号系统不使用相同的算法来编码数据或导出校验和,因此每个条形码类型都必须有自己的软件。