百度空间 | 百度首页 
 
查看文章
 
Jython中数组的生成
2009-03-13 19:32
比如在Java中有byte [],那么如果需要在Jython中传入这样的参数怎么办呢?可以使用jarray模块。如:

  1 
2
3
4
5
>>> import jarray
>>> s = [10, 20]
>>> a = jarray.array(s, 'b')
>>> a
array('b', [10, 20])

使用jarray.array就可以生成数组。而且它是一个通用的功能,根据第二个参数的不同,可以生成不同的类型。对于不同的类型,可以使用不同的类型代码,如:

z Boolean
c char
b byte
h short
i int
l long
f float
d double

如果要转换的没有对应的类型代码,可以直接使用类,比如:java.lang.Byte。

不过对于byte,Python中没有分得很细,要么是字符串,要么是整数。而Java中的byte是带符号的,因此,如果你把一个16进制的字符串想转为一个Byte,怎么做?

int('0xff', 16)

这样得到一个整数。然后:

java.lang.Byte(int('0xff', 16))

但是直接使用java.lang.Byte对象来生成数组是不行的,如:

  1 
2
3
4
5
>>> import java
>>> jarray.array([java.lang.Byte(255)], 'b')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: Type not compatible with array type

可以看到类型不对。这时可以使用java.lang.Byte的intValue()就可以了,如:

  1 
2
3
>>> import java
>>> jarray.array([java.lang.Byte(255).intValue()], 'b')
array('b', [-1])

BTW: 刚看到3月9日,Jython 2.5b3发布了,修复了我以前说的关于from xxx import *的Bug。

类别:Jython | 添加到搜藏 | 浏览() | 评论 (8)
 
最近读者:
 
网友评论:
1
2009-03-14 14:33 | 回复
请问 jython 运行效率 快吗
 
2
2009-03-14 15:11 | 回复
启动是比较慢的,执行感觉还可以,不过没有测过,反正是比cpython慢。
 
3
2009-03-17 16:23 | 回复
总觉得不伦不类的,唯一好处就是可以调用java的类库
 
4
2009-03-30 14:51 | 回复
可以使用 python mysql    pil 这些python的资源吗?
 
5
2009-03-31 11:52 | 回复
二进制的可能不行,我没有试过。
 
6
2009-04-10 17:09 | 回复
应邀回访: 感谢您对YBinin及ybinin.blogspot.com的更新支持。值周末之际,祝君生活快乐,工作如意。
 
7
2009-04-11 17:18 | 回复
请问李兄:
django中如果要将http://127.0.0.1:8000/ajax1/,映射在project目录下的ajax1文件夹的index.html,是在urls.py中写url映射还是如何做,
 
8
2009-05-23 15:53 | 回复
是否有写ironpython的打算?
 
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu