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
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.
Bir kodlama kullanmadan bayt dizisi iç...
Nasıl Onaltılık Dize ve Başkan versa i...
Bayt dönüştürmek için [nasıl] dize?...
Java nasıl insan okunabilir biçime bay...
Nasıl Java hex bir dize bir bayt dizis...