我有一个tibco活动,它以字节为单位给出这个输出。
现在我必须在我的java代码中使用它并将其发送到大型机队列。
我把它作为一个String bwmsg="wcLDxMXGx8="
和在我的主要方法…
byte[] bArray = bwmsg.getBytes();
BytesMessage bytmsg = session.createBytesMessage();
bytmsg.writeBytes(bArray);
mqSender.sendToMQ(bytmsg,connection,sender,session);
OUTPUT: 77634c44784d584778383d
我做错了吗?这已经是一个字节,我读取它作为一个字符串,然后再次得到字节,并做解决方案。这有错吗?
如果是,请告诉我如何将bwmsg
字段作为字节并将其传递给方法。
我用谷歌搜索了很多链接,但没有得到很好的帮助。
这与Base64无关。这是简单的编程101。
您从字符串开始,然后将其转换为字节数组,最后打印出字节数组。
你期望看到什么?您应该期望看到一个字节数组。
即。"wcLDxMXGx8=" is "77634c44784d584778383d"
让我解释一下:
"w" = 0x'77'
"c" = 0x'63'
"L" = 0x'4c'
"D" = 0x'44'
"x" = 0x'78'
"M" = 0x'4d'
"X" = 0x'58'
"G" = 0x'47'
"x" = 0x'78'
"8" = 0x'38'
"=" = 0x'3d'
如果你希望它是人类可读的格式,那么将字节数组转换回字符串,然后将其打印出来。
。新的字符串(bytmsg)
正如Jon Skeet在上面的评论中提到的。我只是把他的话变成了代码。
使用javax.xml.bind。DatatypeConverter
static String bwmsg="wcLDxMXGx8="
static byte[] array = DatatypeConverter.parseBase64Binary(bwmsg);
在main方法中,将上述字段设置为静态,以便您可以直接在main方法中调用它们。public static void main(String [] args){
//other code here
.
.
BytesMessage bytmsg = session.createBytesMessage();
bytmsg.writeBytes(array);
mqSender.sendToMQ(bytmsg,connection,sender,session);
这就解决了我的问题,希望对别人也有帮助。