2015-07-14 5 views
3

Я хочу, чтобы оптимизировать следующий код Java (один метод):Преобразовать байт [], чтобы UnsignedByte []

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; 
} 

Этот код в основном преобразует массив байтов (который представляет собой файл) в UnsignedByte массив таким образом, чтобы его можно отправить в веб-сервис, который я потребляю через ось apache.

Есть ли способ, которым я могу избежать этого для цикла. Есть ли прямой метод для этого?

спасибо.

+1

Я хотел бы использовать Guava для таких операций – pinturic

+0

Какую версию Java вы используете? –

+1

Знаете ли вы, что каждый объект UnsignedByte занимает не менее 12 байтов (в 64-битной виртуальной машине) для хранения одного байта? Надеюсь, вы не используете это для хранения больших двоичных данных ... – Robert

ответ

1

Нет, к сожалению нет. Преобразование массива байтов должно выполняться с помощью элемента.

1

Я хотел бы сделать это с гуавы таким образом:

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]); 
Смежные вопросы