SORU
4 Mart 2010, PERŞEMBE


Convert int için 4 bayt

Böyle bir ikili dosya okuyorum:

InputStream in = new FileInputStream( file );
byte[] buffer = new byte[1024];
while( ( in.read(buffer ) > -1 ) {

   int a = // ??? 
}

Bu 4 bayt okuma ve bu ama int bir değer oluşturmak için ne yapmak istediğimi, nasıl yapacağımı bilmiyorum.

Ben bir anda 4 bayt al, ve bir "operasyon ( >gibi bayt gerçekleştirmek için var gibi hissediyorum ><&; >lt >Yeni int oluşturmak için ve bu gibi FF falan)

Bu deyim nedir?

EDİT

Bu biraz daha karmaşık ( açıklamak) haline geldim

Yapmaya çalıştığım şey, bir dosya ( olabilir ascıı, ikili, fark etmez ) okumak ve tamsayılar özüdür.

Örneğin varsayalım ikili içeriği ( temel 2 ) :

00000000 00000000 00000000 00000001
00000000 00000000 00000000 00000010

Tamsayı gösterimi 1 , 2 değil mi? :- / 1 İlk 32 bit için, ve kalan 32 bit için 2.

11111111 11111111 11111111 11111111

-1 olurdu

ve

01111111 11111111 11111111 11111111

Integer.MAX_VALUE ( 2147483647 ) olurdu

CEVAP
5 Mart 2010, Cuma


ByteBuffer bu yeteneği vardır, ve küçük ve büyük indian tamsayılar ile çalışmak mümkün.

Örnek:


//  read the file into a byte array
File file = new File("file.bin");
FileInputStream fis = new FileInputStream(file);
byte [] arr = new byte[(int)file.length()];
fis.read(arr);

//  create a byte buffer and wrap the array
ByteBuffer bb = ByteBuffer.wrap(arr);

//  if the file uses little endian as apposed to network
//  (big endian, Java's native) format,
//  then set the byte order of the ByteBuffer
if(use_little_endian)
    bb.order(ByteOrder.LITTLE_ENDIAN);

//  read your integers using ByteBuffer's getInt().
//  four bytes converted into an integer!
System.out.println(bb.getInt());

Bu yardımcı olur umarım.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ecf150king

    ecf150king

    20 Ocak 2006
  • Gigawipf

    Gigawipf

    18 ŞUBAT 2010
  • Utah Valley Online

    Utah Valley

    9 AĞUSTOS 2010