将byte[]转换为UnsignedByte[]

3
我希望优化以下java代码(一个单独的方法):
private static UnsignedByte[] getUnsignedBytes(byte[] bytes){

    UnsignedByte[] usBytes = new UnsignedByte[bytes.length];        
    int f;
    for(int i = 0; i< bytes.length;i++){
        f = bytes[i]  & 0xFF;

        usBytes[i] = new UnsignedByte(f) ;
    }

    return usBytes;
}

这段代码基本上将一个字节数组(即一个文件)转换为无符号字节数组,以便可以通过使用Apache Axis调用的Web服务发送它。

有没有什么方法可以避免使用这个for循环。是否有直接的方法可以完成此操作?

谢谢。


1
我会使用Guava进行这样的操作。 - pinturic
你使用的Java版本是什么? - fps
1
你是否知道每个UnsignedByte对象至少需要12个字节(在64位VM中)来存储一个byte?希望你不要用它来存储大型二进制数据... - Robert
@Robert:是的,这是针对20M的最大文件。 - fahadm
@pinturic:你能分享一下guava的代码吗?我甚至找不到它。 - fahadm
@FedericoPeraltaSchaffner:它是7。 - fahadm
2个回答

1
很抱歉,没有这样的功能。必须逐个元素地转换字节数组。

1
我会用Guava这种方式来做:
UnsignedByte[] usBytes = Lists.transform(Arrays.asList(bytes), new Function<UnsignedByte, Short>() {
            @Override
            public UnsignedByte apply(@Nullable Byte input) {
                f = input  & 0xFF;
                return new UnsignedByte(f) ;
            }
        }).toArray(new UnsignedByte[bytes.length]);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接