Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么我的ASCII字符到整数转换失败?_C#_Barcode_Checksum_Code128_Check Digit - Fatal编程技术网

C# 为什么我的ASCII字符到整数转换失败?

C# 为什么我的ASCII字符到整数转换失败?,c#,barcode,checksum,code128,check-digit,C#,Barcode,Checksum,Code128,Check Digit,根据这里的图表: 此字符: Ë 等于值103 然而,这一代码: string barcode = textBoxRawCode128.Text.Trim(); . . . int runningTotal = ConvertToASCIIInt(barCode[0]); . . . private int ConvertToASCIIInt(char valToConvertToASCII) { const int ASCII_ADJUSTMENT_VAL = 32; r

根据这里的图表:

此字符:

Ë
等于值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

根据这个图表:,对应于103的值是-,但是当我将条形码设置为“尝试另一个字符串”时,返回的值是8193。。。???好奇者和好奇者


注:相关/初步帖子是

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

因此
203-32=171


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

因此
203-32=171


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

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


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

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

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


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

是的,我也测试了“g”;这给了我71,因为103-32==71。我从校验位计算中得到的结果是“gTry other string.”并附加了一个不可打印(晦涩、不淫秽)的字符;毕竟,如果有人想将“go west young man”的值编码为Code128条形码,该怎么办?解析器会把“G”作为起始字符,并考虑“O西年轻人”的值……不是吗?不确定你想要达到什么目的。我通常像这样将字符转换为ascii int<代码>int值=(int)ch。应该足够了。Am缺少什么?ascii和条形码之间的差异是32,因此减法。在;)请看
Ë
字符是ascii 211,超出了条形码的128,这将使其无法打印;这给了我71,因为103-32==71。我从校验位计算中得到的结果是“gTry other string.”并附加了一个不可打印(晦涩、不淫秽)的字符;毕竟,如果有人想将“go west young man”的值编码为Code128条形码,该怎么办?解析器会把“G”作为起始字符,并考虑“O西年轻人”的值……不是吗?不确定你想要达到什么目的。我通常像这样将字符转换为ascii int<代码>int值=(int)ch。应该足够了。Am缺少什么?ascii和条形码之间的差异是32,因此减法。在;)请查看
Ë
字符是ascii 211,这超出了条形码的128,这将使其无法打印。您引用了
Ë
的USS code-128字符集值(您的链接)。但是.NET不使用USS Code-128字符集,而是使用Unicode。在Unicode中,代码点为十六进制
00CB
,请参见同一表格或官方文件。您可能需要一个在Unicode和USS Code-128字符集之间转换的工具。瞧,这就像一个俄罗斯玩偶,或者一个邪恶的漩涡。奇怪的是,有些人还没有用GetCheckDigit(barcodeType typ,string barcodeVal)这样的方法解决这个问题,在这种情况下,“typ”应该是barcodeType.Code128左右。“奇怪”是因为它不可能很少需要计算,而“怪不得”是因为它让人头疼。你链接的页面也有一个。我想要一个.NET字体编码器有什么原因吗?好问题。当我写那封信的时候