【问题标题】:Python String to Java byte[]Python 字符串到 Java 字节 []
【发布时间】:2015-08-21 13:18:02
【问题描述】:

据我了解,Python 2 字符串(str 类型)只不过是一个字节序列。如何将这样的字符串显式转换为 Java 字节数组?

天真的尝试行不通:

from jarray import array
myStr = 'some str object'
myJavaArr = array(myStr, 'b') # TypeError: Type not compatible with array type

我的理由是,当 Jython 将 Python 字符串隐式转换为 Java 代码时,它会错误地将其转换为 Java 字符串,因为它不知道 str 的编码。

【问题讨论】:

    标签: jython


    【解决方案1】:

    我找到了一个实用方法:

    from org.python.core.util import StringUtil
    myJavaArr = StringUtil.toBytes(myStr)
    

    【讨论】:

      【解决方案2】:

      您将str 对象传递给jarray.array() 的原始方法在Jython 2.5 及更早版本中有效。

      现在您必须先将str 转换为数字序列(例如列表、元组或bytearray):

      myStr = 'some str object'
      myJavaArr = array( bytearray(myStr), 'b')
      

      myStr = 'some str object'
      myList = [ord(ch) for ch in myStr]
      myJavaArr = array( myList, 'b')
      

      (另见https://sourceforge.net/p/jython/mailman/message/35003179/

      还要注意,Java 的byte 类型是已签名。如果任何整数的值超出 -128..127 范围,则转换将失败。如果您从 Python 中的 unsigned 字节值开始,则需要转换它们。 (例如,将此应用于每个值:if 0x80 <= i <= 0xFF: i = i - 256

      【讨论】:

        猜你喜欢
        • 2021-03-27
        • 2013-12-05
        • 1970-01-01
        • 2019-02-22
        • 2020-06-20
        • 1970-01-01
        • 2016-02-13
        • 2011-10-04
        • 2017-04-22
        相关资源
        最近更新 更多