Согласно графику здесь:Почему мой символ 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;
}
.. .когда значение в текстовом поле и, следовательно, barcode - «Перебирать другую строку», таким образом, где штрих-код [0] равен «Ë», возвращает значение 171 вместо 103 ... ???
И согласно этой диаграмме: http://www.adams1.com/128table.html, значение, соответствующее 103, равно ‡, но когда я устанавливаю barCode на «‡ Попробовать другую строку», возвращаемое значение равно 8193 ... ??? Страньше и страньше ...
Примечание: Связанная/предварительный пост Is this code for calculating Code128 barcode check digits correct?
Вы указываете значение * USS Code-128 Character Set * для 'Ë' (ваша ссылка). Но .NET не использует * USS Code-128 Character Set *, вместо этого он использует Unicode. В Юникоде кодовая точка является шестнадцатеричной «00CB», см. Ту же таблицу или официальную [Юникод-диаграмму] (http://www.unicode.org/charts/PDF/U0080.pdf). Вам может понадобиться инструмент, который конвертирует между Unicode и * USS Code-128 Character Set *. –
IOW, это как русская кукла или порочный вихрь. Нечетно/неудивительно, что кто-то еще не решил эту задачу с помощью метода GetCheckDigit (barcodeType typ, string barcodeVal) - где «typ» в этом случае будет BarcodeType.Code128 или около того. «Нечетный», потому что он не может быть таким редким, что его нужно вычислить, и «неудивительно», потому что это такая боль в ослике. –
Связанная с вами страница также имеет [.NET Font Encoder] (http://www.idautomation.com/font-encoders/dotnet-assembly/). –