我使用静态编程语言和vertx。在我的vertx应用程序中,我试图将ByteArray发送到另一个事件消费者。
为此,我将其转换为字符串,然后一旦在第二个处理程序中接收到它,我将其转换回ByteArray,但对象不相等。它们非常不同,我不知道为什么。
我的两个事件处理程序是:
eb.consumer<JsonObject>("epos.print.print-image-from-path") { message ->
GlobalScope.launch(vertx.dispatcher()) {
var imagePath = message.body().get<String>("imagePath")
var convertor = image2escpos.Image2ESCPOS()
var bytes = convertor.printImage(imagePath)
println( bytes.joinToString("") { String.format("%02X", (it.toInt() and 0xFF)) })
queueJob(bytes.toTypedArray())
temp1 = bytes
eb.publish("epos.print.print-image-from-bitmap", json { obj("bytes" to String(bytes)) })
}
}
eb.consumer<JsonObject>("epos.print.print-image-from-bitmap") { message ->
GlobalScope.launch(vertx.dispatcher()) {
var bytes = message.body().get<String>("bytes")
var byteArray = bytes.toByteArray(StandardCharsets.UTF_8)
println( byteArray.joinToString("") { String.format("%02X", (it.toInt() and 0xFF)) })
println("OUTPUT")
println(temp1)
println(byteArray)
println(temp1==byteArray)
}
}
我有一个私有变量:private lateinit var temp1:ByteArray
,这样我就可以比较这两个变量了。
我正在调用“epos.print.print image from path”方法,方法是发送一个带有json正文的事件,例如:{“imagePath”:/Users/XXXXXXX/Downloads/QR-Zed80.BMP}
当编码/解码对象时,我错过了什么。我不完全确定字符串与ByteArray的关系,但我需要在2个处理程序之间传递ByteArray,String似乎是事件总线上的唯一方法。
提前感谢您的帮助!
抢劫
如果不使用群集Vert. x,则只需发送和接收ByteArray即可。
不过,您可能需要实现无操作编解码器:https://alexey-soshin.medium.com/understanding-vert-x-event-bus-c31759757ce8
问题内容: 这是我尝试的错误消息。我究竟做错了什么? UnicodeEncodeError:’ascii’编解码器无法在位置37编码字符u’\ xa0’:序数不在范围内(128) UnicodeDecodeError:’ascii’编解码器无法解码位置37的字节0xc2:序数不在范围内(128) 问题答案: 您无法解码,也无法编码。尝试以另一种方式进行操作。
以下是我尝试的错误信息。我做错了什么? UnicodeEncodeError:“ASCII”编解码器无法编码位置37中的字符U“\XA0”:序号不在范围(128)中
问题内容: ’=?KOI8-R?B?W1JFUS0wMDI1NDEtNDc5NzddIO / h7yAi89TSz8rGwdLGz9IiIDs =?= \ r \ n \ t =?KOI8-R?B?Ry43MjkgKDEwKQ ==?=’ 如何将其转换为可读的内容?谢谢 ! 问题答案: email.header.decode_header(‘=?KOI8-R?B?W1JFUS0wMDI1NDEtN
字符编码 我们已经讲过了,字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题。 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),如果要表示更大的整数,就必须用更多的字节。比如两个字节可以表示的最大整数是655
字符编码 我们已经讲过了,字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题。 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),如果要表示更大的整数,就必须用更多的字节。比如两个字节可以表示的最大整数是655
我想将一个字符串编码成并通过套接字传输它,然后解码回来。 下面是我的代码,结果是“77+9x6s=” 有什么想法如何实现这一点吗?