首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解码爱普生打印(ESC-i)命令解码/编码

解码爱普生打印(ESC-i)命令解码/编码
EN

Stack Overflow用户
提问于 2022-03-02 03:46:36
回答 1查看 227关注 0票数 0

我试图理解使用爱普生ESCP2打印命令“ESCP2”用于压缩值=1的算法。我有一个原始打印文件的十六进制转储,在某种程度上,它看起来像下面的十六进制文件(注意小endian格式问题)。

代码语言:javascript
复制
000006a  1b  (  U 05 00 08 08 08 40 0b 
         units; (page1=08), (vt1=08), (hz1=08), (base2=40 0b=0xb40=2880)
...
00000c0 691b 0112 6802 0101 de00
        esc i 12 01 02 68 01 01 00
        print color1, compress1, bits1, bytes2, lines2, data...
          color1 = 0x12 = 18 = light cyan
          compress1 = 1
          bits1 (bits/pixel) = 0x2 = 2
          bytes2 is ??? = 0x0168 = 360
          lines2 is # lines to print = 0x0001 = 1
00000c9                       de 1200 9a05 6959
00000d0 5999 a565 5999 6566 5996 9695 655a fd56
00000e0 1f66 9a59 6656 6566 5996 9665 9659 6666
00000f0 6559 9999 9565 6695 9965 a665 6666 6969
0000100 5566 95fe 9919 6596 5996 5696 9666 665a
0000110 5956 6669 0456 1044 0041 4110 0040 8140
0000120 9000 0d00
                  1b0c 1b40 5228 0008 5200 4d45
                    FF esc @ esc ( R 00 REMOTE1

我遇到的困难是如何解码数据,从00000c9开始,给定2位/像素和360的计数。据我所知,这是某种形式的tiff或rle编码,但我无法以一种有意义的方式对它进行解码。输出由GIMP的gutenprint插件制作。

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2022-03-02 22:48:45

字节计数不是输入流中字节的计数;它是将输入流中的字节展开为未压缩形式的字节数。因此,当展开时,总共应该有360字节。输入字节被解释为要跟随的字节计数(如果为正,则计数为字节值+1 );如果计数为字节值+1的次数,则接下来的字节应该再次展开+1。末尾的0D是整个行的终止行返回。

尽管单个像素/喷嘴控件每个仅为2位,但输入流仅被视为整个字节的字符串。因此,对像3喷嘴序列这样的东西使用重复计数是不可能的;重复计数必须始终指定一个完整的字节4喷嘴组合。

然后,上面的示例指定:

代码语言:javascript
复制
  0xde00  => repeat 0x00 35 times
  0x12    => use the next 19 bytes as is
  0xfd66  => repeat 0x66 4 times
  0x1f    => use the next 32 bytes as is
  etc.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71317225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档