ZPL:二进制 B64 和压缩 Z64 编码

Int*_*low 5 c# zpl-ii zpl

也许有人可以帮助我解决 Zebra ZPL 问题。ZPL 手册并没有真正帮助我。我想将二进制(使用 ZPL B64)和压缩二进制(使用 ZPL Z64)图像数据传输到打印机。

我找到了以下信息:

  • B64 数据以 Base64 格式编码。
  • 对于 Z64,数据首先使用 LZ77 压缩,然后使用 Base64 编码。
  • CRC 数字附加到两种编码中。(可能必须是 CRC-16)但是我没有计算出有效的 CRC 校验位!

你们有人这样做过吗?

  • LZ77算法使用哪些参数?
  • 使用哪种 CRC 以及哪个起始多项式?
  • 也许有人甚至有解决这个问题的 C# 代码?

非常感谢。

GSe*_*erg 6

ZPL 手册并没有真正帮助我。

告诉我怎么回事儿!

  • 手册中提到的“LZ77”算法实际上是ZLIB格式。我为此使用了http://zlib.net 。
  • 手册中提到的“CRC”实际上是CRC16-CCITT。我使用的代码:http://sanity-free.com/133/crc_16_ccitt_in_csharp.html

    为了正确计算它:

    • 使用 ZLIB 压缩图片位(图片必须是PixelFormat.Format1bppIndexed,并且最好使用 访问图片位Bitmap.LockBits)。
    • 将压缩数据编码为 Base64。不允许有空格或换行符。
    • 根据 ASCII 编码将 Base64 字符串转换为字节数组 ( System.Text.Encoding.ASCII.GetBytes(base64string))。
    • 计算该字节数组的 CRC。初始 CRC 值必须为零。