字符串到字节转换 - 如果已经是字节并将其作为字符串

时间:2014-08-11 14:14:46

标签: java java-ee byte ibm-mq mq

我有一个tibco活动,它以字节的形式提供此输出。

现在我必须在我的java代码中使用它并将其发送到Mainframe Queue。

我将其作为String bwmsg="wcLDxMXGx8="和我的主要方法......

byte[] bArray = bwmsg.getBytes();
BytesMessage bytmsg = session.createBytesMessage(); 
bytmsg.writeBytes(bArray);
mqSender.sendToMQ(bytmsg,connection,sender,session);

OUTPUT: 77634c44784d584778383d

我做错了吗? 已经是一个字节的东西我正在读它作为一个字符串,然后再次从它获取字节并进行解决方法。这是错的吗?

如果是,请告诉我如何将bwmsg字段作为字节并将其传递给方法。

我用谷歌搜索了许多链接,但没有给他们很好的帮助。

2 个答案:

答案 0 :(得分:2)

这与Base64无关。这是简单的编程101.

您首先使用字符串,然后将其转换为字节数组,最后打印出字节数组。

您期望看到什么?你应该期望看到一个字节数组 即 “wcLDxMXGx8 =”是“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'

如果您希望以人类可读的格式将字节数组转换回字符串然后将其打印出来。

即。 new String(bytmsg)

答案 1 :(得分:2)

正如Jon Skeet在上述评论中提到的那样。我只是把他的话放在代码中。

USE 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);

这解决了我的目的,希望它也会帮助别人。