Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为Zebra打印机将单色位图数据转换为小的endian顺序十六进制字符串_Java_Bitmap_Hex_Zebra Printers_Zpl - Fatal编程技术网

Java 为Zebra打印机将单色位图数据转换为小的endian顺序十六进制字符串

Java 为Zebra打印机将单色位图数据转换为小的endian顺序十六进制字符串,java,bitmap,hex,zebra-printers,zpl,Java,Bitmap,Hex,Zebra Printers,Zpl,我有一个1bpp单色位图图像加载到内存中。我将图像数据加载到字节数组中。我正试图打印到Zebra打印机上,按照他们的手册,我觉得我大部分代码都能正常工作,只是当我将图像数据转换为hexcode并将命令发送到打印机时,边界框似乎可以打印正确的大小,但图像被无望地乱序了 我怀疑这是因为我在StackOverflow上找到的将字节数组转换为十六进制的方法是,当我需要以小端顺序查看字节值时,以大端顺序读取每个字节值 public static String bytesToHex(byte[] b) {

我有一个1bpp单色位图图像加载到内存中。我将图像数据加载到字节数组中。我正试图打印到Zebra打印机上,按照他们的手册,我觉得我大部分代码都能正常工作,只是当我将图像数据转换为hexcode并将命令发送到打印机时,边界框似乎可以打印正确的大小,但图像被无望地乱序了

我怀疑这是因为我在StackOverflow上找到的将字节数组转换为十六进制的方法是,当我需要以小端顺序查看字节值时,以大端顺序读取每个字节值

public static String bytesToHex(byte[] b) {
    char hexDigit[] = {'0', '1', '2', '3', '4', '5', '6', '7',
            '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
    StringBuffer buf = new StringBuffer();
    for (int j=0; j<b.length; j++) {

        buf.append(hexDigit[b[j] & 0x0f]);
        buf.append(hexDigit[(b[j] >> 4) & 0x0f]);
    }
    return buf.toString().toUpperCase();
}
公共静态字符串bytesToHex(字节[]b){
字符hexDigit[]={'0','1','2','3','4','5','6','7',
‘8’、‘9’、‘a’、‘b’、‘c’、‘d’、‘e’、‘f’};
StringBuffer buf=新的StringBuffer();
对于(int j=0;j>4)和0x0f]);
}
返回buf.toString().toUpperCase();
}
在这一点上,我被卡住了。有人对我如何修改上面的代码,以正确的顺序读取每个字节的值来读取位图图像数据有什么建议吗

编辑:

图片中,詹姆斯·邦德(James Bond)被一个糟糕的弗洛伊德·斯坦伯格(Floyd Steinberg)抖动实现(这完全是另一个问题)弄得一团糟

编辑2:

嗯,这不起作用,看起来当我上传它的时候,它会被转换成PNG

十六进制位图数据:

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

嗯。。。我以为单色1bpp位图只有两种可能的颜色?为什么image4j ConvertUtil.convert1引入了其他颜色?我想知道这是否是问题所在

编辑3:


NVM,每个位决定1bpp中的颜色,因此每个字节最多可代表8个像素。这很可能是正确的。

如果问题是一点一点的顺序,我会感到惊讶。这些图像可用吗?@trashgood只是为了确定我将用于单色1bpp数据的字节转储到了磁盘上,以进行验证,并确保它是正常的formatted@trashgod我发布了更多信息和位图数据的十六进制输出。我认为你是对的,也许一点一点的顺序不是问题,另一个需要检查的因素是;在您的示例中,31字节*8位/字节=248位。是这样吗?