已知53°W,已知地方时求经度17:50 求67°W,25°W,63°E的已知地方时求经度?

最近做了一个项目,其中用到了条形码的生成,为了避免时间太长自己忘记相关的知识点,同时也为了方便给后来人减少一些坑,所以就先用这篇文章做一个简单的记录。

条形码编码规则有不少,付款码现在用的是Code128编码规则。

  • 具有A、B、C三种不同的编码类型,可提供标准ASCII中128个字元的编码使用
  • 允许双向扫描(正着反着都能扫)

  • 可自行决定是否加上检验位(但付款码必须要校验位)

  • 条码长度可调,但包括开始位和结束位在内,不可超过232个字元(付款码也就十几二十位数字)

  • 同一个128码,可以由A、B、C三种不同编码规则互换,既可扩大字元选择的范围,也可缩短编码的长度(这点十分重要,后面会讲到)

由于编码规则越复杂,二维码就越复杂,所以条形码编码优先使用的是Code128C这个编码规则。

Code128C将数字两个两个组合在一起,大大减小了条码的复杂度。

为了方便表达,我们用b代表一条黑色像素宽度的线,s代表一条白色像素宽度的线,当bs组合时,中间不留任何缝隙

ABC三种编码的编码表如下,后面会用到这张表:

0 0
0 0

对于某种条码的编码规则为:

开始位 + 后面所有的数据按顺序拼接 + 校验位 + 结束位

编码的103-106为起始位于结束位,只会在开头或结尾出现

我们首先使用一个简单的例子来解释如何使用三种编码方式进行条形码的编码:

需要编码成条形码的数据:1346

B类编码和A几乎完全一样,只有起始位和校验位所使用的开头不一样:

Code128C编码时,只能编码数字内容,并且在编码前会将偶数个的数字两个两个分为一组,进行编码:

这时候就应该可以明白,为什么付款码优先使用的是Code128C编码了。

在实际按此方法使用的过程中,也遇到了一个坑,下面就简单讲一下这个坑人的地方

生成偶数位数字的条形码

这个简单,直接用Code128C编码方式编码即可,不再重复说明

生成奇数位数字的条形码

这个需求在一开始听到之后,我是十分疑惑的:完全不可能嘛!Code128C编码怎么可能生成一个奇数位数字的条形码呢?

不过在bing中翻阅过不少资料后,发现这个是可行的,原因在文章开头也讲到了:

同一个128码,可以由A、B、C三种不同编码规则互换,既可扩大字元选择的范围,也可缩短编码的长度

也就是说,我们可以在Code128C的编码中插入Code128A编码,以此来实现奇数位数字的表示,同时保证条形码不会太复杂,具体如下。

首先我们假定一个数字吧:7434012

第一步需要将数字分组:74、34、01、2

两位数的部分就用Code128C表示,一位数的部分就用Code128A表示。那么问题来了,校验位怎么求呢?这里经过查阅资料,校验位是要把Code128A的编码值也算进去,按code128C的校验值计算方法来计算。。。

其他编码方式开头,中途更换编码方式的算法也可以进行类推。

既然条码生成算法讲完了,下一篇文章就可以使用lua来生成条形码,显示到屏幕上面了

如果文章有错误,请在下方留言,谢谢!

我要回帖

更多关于 已知地方时求经度 的文章

 

随机推荐