Java 字符串到字节的转换(如果已存在字节并将其作为字符串)

Java 字符串到字节的转换(如果已存在字节并将其作为字符串),java,jakarta-ee,byte,ibm-mq,mq,Java,Jakarta Ee,Byte,Ibm Mq,Mq,我有一个tibco活动,它以字节给出这个输出 现在我必须在java代码中使用它,并将其发送到大型机队列 我把它当作一个字符串bwmsg=“wcLDxMXGx8=“”,在我的主要方法中 byte[] bArray = bwmsg.getBytes(); BytesMessage bytmsg = session.createBytesMessage(); bytmsg.writeBytes(bArray); mqSender.sendToMQ(bytmsg,connection,sender,s

我有一个tibco活动,它以字节给出这个输出

现在我必须在java代码中使用它,并将其发送到大型机队列

我把它当作一个
字符串bwmsg=“wcLDxMXGx8=“
”,在我的主要方法中

byte[] bArray = bwmsg.getBytes();
BytesMessage bytmsg = session.createBytesMessage(); 
bytmsg.writeBytes(bArray);
mqSender.sendToMQ(bytmsg,connection,sender,session);
输出: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'
如果您希望它是人类可读的格式,那么将字节数组转换回字符串,然后将其打印出来


i、 新字符串(bytmsg)

这与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'
如果您希望它是人类可读的格式,那么将字节数组转换回字符串,然后将其打印出来


i、 新字符串(bytmsg)

正如Jon Skeet在上面的评论中提到的。我只是把他的话译成代码

使用javax.xml.bind.DatatypeConverter

静态字符串bwmsg=“wcLDxMXGx8=” 静态字节[]数组=DatatypeConverter.parseBase64Binary(BWMG)

在main方法中,将上述字段设置为静态,以便可以在main方法中直接调用它们。
publicstaticvoidmain(字符串[]args){
//这里还有其他代码
.
.
BytesMessage bytmsg=session.createBytesMessage();
字节(数组);
mqSender.sendToMQ(bytmsg、连接、发送方、会话);


这解决了我的目的,希望它也能帮助其他人。

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

使用javax.xml.bind.DatatypeConverter

静态字符串bwmsg=“wcLDxMXGx8=” 静态字节[]数组=DatatypeConverter.parseBase64Binary(bwmsg);

在main方法中,将上述字段设置为静态,以便可以在main方法中直接调用它们。
publicstaticvoidmain(字符串[]args){
//这里还有其他代码
.
.
BytesMessage bytmsg=session.createBytesMessage();
字节(数组);
mqSender.sendToMQ(bytmsg、连接、发送方、会话);


这解决了我的问题,希望它也能帮助其他人。

我强烈怀疑字符串是base64编码的。所以你不想调用
getBytes()
-您想使用base64解码器。您需要更清楚地了解转换发生的位置和方式…@JonSkeet::您能确认这种方法是否错误吗?我正在获取字节…将其作为字符串,然后从中获取字节并发送它们。您所说的“我获取字节”是什么意思你在这里说得太含糊了。我们所能看到的是你从一个字符串开始(
string bwmsg=…
)@JonSkeet:我是从一个字符串开始的。但是我从另一个系统,即tibco BW中得到了它。这个输出是以字节为单位的。我假设它是字符串,然后从中读取字节。如果我可以直接用字节代替字符串BWMG,请让我知道。tibco BW是一个SOA框架。我通常使用生成的类作为SOA communication,用于将SOA消息中的base64编码PC数据转换为java中的byte[]变量。如果手动解析SOA消息,则必须自己进行转换(例如,java 8提供java.util.base64.getDecoder()。你能分享一些关于你的设置的更多信息吗?你是如何通过tibco BW接收数据的?我强烈怀疑字符串是base64编码的。所以你不想调用
getBytes()
-您想使用base64解码器。您需要更清楚地了解转换发生的位置和方式…@JonSkeet::您能确认这种方法是否错误吗?我正在获取字节…将其作为字符串,然后从中获取字节并发送它们。您所说的“我获取字节”是什么意思你在这里说得太含糊了。我们所能看到的是你从一个字符串开始(
string bwmsg=…
)@JonSkeet:我是从一个字符串开始的。但是我从另一个系统,即tibco BW中得到了它。这个输出是以字节为单位的。我假设它是字符串,然后从中读取字节。如果我可以直接用字节代替字符串BWMG,请让我知道。tibco BW是一个SOA框架。我通常使用生成的类作为SOA communication,用于将SOA消息中的base64编码PC数据转换为java中的byte[]变量。如果手动解析SOA消息,则必须自己进行转换(例如,java 8提供java.util.base64.getDecoder()。你能分享更多关于你的设置的信息吗?你是如何通过tibco BW接收数据的?谁告诉你它与Base64无关。上面的Jon Skeet是正确的。谁告诉你它与Base64无关。上面的Jon Skeet是正确的。