【问题标题】:Passing strings[]'s as byte[]将字符串 [] 作为字节 [] 传递
【发布时间】:2010-11-03 23:32:39
【问题描述】:

我正在使用我的 python 脚本将与我的 java 应用程序通信的网络。 python 脚本将一个 DataPacket(只是一个包含一些字符串和一些其他数据的数据包)传递给 java 服务器进行处理。我知道如何将信息打包到字节数组中,但是如何将其解包以用作字符串?到目前为止,我必须解析数据包中的数据数组并将其逐个发送。这是唯一的方法吗?我可以使用 ByteInputStream 吗?如果可以,如何使用?

谢谢 ~伊顿

【问题讨论】:

  • 你需要一个字节数组解包解决方案是java。您可以删除 python 标签,因为它在这里没有太大的相关性。此外,您的应用程序不应依赖于获取字节流。这是不可靠的。它应该取决于从 python 脚本打包的数据结构。
  • @pyfunc:了解 Python 如何将字符串打包成字节是相关的。

标签: java python networking byte inputstream


【解决方案1】:

我不确定您所做的是否完全正确,因为您将字符串分成单独的数据包。这可能会导致多字节字符串出现问题。

不过,您不妨查看ByteArrayOutputStream。您可以写入此内容,然后使用toString(enc) 转换为字符串,其中enc 是您在Python 中用于将字符串转换为字节的编码。

查看您在下面的评论,您似乎需要一些方法来在 Python 中序列化并在 Java 中反序列化。撇开 XML 序列化之类的解决方案不谈,您是否看过像 Google Protocol Buffers 这样的可能解决方案?

【讨论】:

  • 感谢您的回复,为了进一步说明,我发送的“数据包”只是一个名为 packet 的类,它包含字符串数组和一些整数。我想对其进行分段的唯一原因是因为我不确定如何将整个类转换为字节数组以发送到 java 服务器。如何使用传入的 Serializable 将类转换为字节?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-28
相关资源
最近更新 更多