我在维基百科和GS1官方规范上搜索过很多页面,但仍然没有找到关于这个问题的明确答案。
GS1 FNC1字符的实际16进制/二进制值是多少?
有关如何使用GS1标识符、如何使用ZPL打印条形码以及如何编码FNC1的信息很多,但我想知道该字符的实际16进制值。
我在维基百科和GS1官方规范上搜索过很多页面,但仍然没有找到关于这个问题的明确答案。
GS1 FNC1字符的实际16进制/二进制值是多少?
有关如何使用GS1标识符、如何使用ZPL打印条形码以及如何编码FNC1的信息很多,但我想知道该字符的实际16进制值。
特殊功能字符,如FNC1到FNC4属于“非数据字符”类别,可以在各种条形码符号中进行编码,但在解码数据流中没有任何直接的ASCII表示。支持这些字符的每个符号系统都有一种不同的方案来对它们进行内部表示,这与任何面向字节的字符数据都有很大的区别。
FNC字符既作为标志字符(指示读取器的某些特殊信息),也作为格式化字符(修改编码数据的含义)。因此,它们不打算直接传输到基本条形码读取器从主机系统接收到的数据中,尽管在两种情况下,它们可能会对传输的消息产生“影响”。
每个FNC字符的通常目的如下:
请注意,某些条形码符号可能并不支持所有这些字符,并且甚至可能以不同的、非典型或过载的方式指定它们。
通过特定于编码软件的“转义机制”,可以在符号的内部数据中对FNC字符进行编码。每个库都有一种不同的方式来接受它们输入中的这些非数据字符。例如,为了在其典型的GS1结构化数据角色中使用FNC1,用于数据“(01)00312345678906(21)123456789012(30)0144”,您可能会看到FNC1字符被转义为{ FNC1 }
,以便输入看起来像{ FNC1 } 010031234567890621123456789012 { FNC1 } 300144
。
一些库甚至会使用一组常规或扩展的ASCII字符作为FNC字符的占位符,但这些是任意表示方法,认为它们是这些非数据字符的实际ASCII值是错误的。
扫描条形码后,符号的内部数据通常会被解码,然后通过基本通道(例如键盘楔)作为字节序列传输到主机以根据Latin-1字符编码进行解释。这样的方式无法表示FNC字符,并且将其排除在数据流之外,但是它们对数据的格式化效果仍然存在。
例如,大多数符号编码的标准规定,在符合GS1应用标识符标准格式的数据中,当FNC1字符被用作字段分隔符时,应将其解码并传输为GS(ASCII 29)。明确说明,FNC1字符作为GS1应用标识符分隔符使用的格式化效果是在可变长度字段末尾放置GS字符。但在其他角色中(例如当FNC1作为“第一/第二位置”的标志字符和非GS1格式数据一起使用时),对所传输数据没有格式化效果,因此在解码过程中没有ASCII表示。