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
。Smallg
是具有ascii值的字符103
因此203-32=171
实际上,您显示的字符的值为
Ë
=203
。Smallg
是具有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字体编码器有什么原因吗?好问题。当我写那封信的时候