【发布时间】:2013-09-15 22:35:32
【问题描述】:
根据这里的图表:
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...???越来越好奇了……
注意:相关/初步帖子是Is this code for calculating Code128 barcode check digits correct?
【问题讨论】:
-
您引用了
Ë的 USS Code-128 字符集 值(您的链接)。但是 .NET 不使用 USS Code-128 字符集,而是使用 Unicode。在 Unicode 中,代码点是十六进制的00CB,请参见同一张表或官方的 Unicode chart。您可能需要一个在 Unicode 和 USS Code-128 字符集之间进行转换的工具。 -
IOW,这就像一个俄罗斯娃娃,或者一个恶性漩涡。奇怪/难怪有人还没有用像 GetCheckDigit(barcodeType typ, stringbarcodeVal) 这样的方法解决这个挑战——在这种情况下,“typ”是 BarcodeType.Code128 左右。 “奇怪”是因为它不可能那么罕见,需要计算,而“难怪”是因为这对驴子来说太痛苦了。
-
您链接的页面也有一个.NET Font Encoder。
-
我想要一个 .NET 字体编码器有什么原因吗?
-
好问题。当我写那条评论时,我的印象是该链接中的 DLL 还提供了 .NET 方法来调用 ASCII 和这种 Code128 格式之间的转换。但是我没试过,可能我的印象有误。
标签: c# barcode checksum code128 check-digit