2016-03-25 81 views
1

Bir Tam Sayı (32 bit veya 4 Bayt) bir Byte dizisine dönüştürmeye ve bir dosyaya yazmaya çalışıyorum SADECE bu tamsayıdaki ilk Byte kesildi.Java - Bir Tamsayı Değer türünü bir Bayt'a dönüştürmek istiyorum, bu yüzden ikili dosya biçiminde bir dosyaya yazabilirim

DataOutputStream os = new DataOutputStream(new FileOutputStream(fileChooser.getSelectedFile() + ".soit")); 

byte[] bytes = ByteBuffer.allocate(4).putInt(511).array(); 
for (byte b : bytes) { 
    System.out.format("0x%x ", b); 
    try { 
     os.write(bytes, 0, 1); 
    } catch (IOException ex) { 
     Logger.getLogger(p8r_planning.class.getName()).log(Level.SEVERE, null, ex); 
    } 
} 

Burada ne yazık ki dosya oluşturur ancak herhangi bir veri içermiyor kodumu, ancak benim System.out.format hattının bir parçacık İşte beklenen sonuçların çıktısını gelmez.

0x0 0x0 0x1 0xff bu durumda

, sadece ikili biçimde dosyama yazılı ilk byte (0xff) istiyorum. Bunun gibi :

bana birisi noktası yanlış yapmış olabileceğini Can

ne olacak?

+0

yazma DataOutputStream üzerinde writeInt kullanırdınız? Ayrıca, "X [binary?] Temsilini bir bayt değerinin" metin "olarak yazmasını gerçekten istediğiniz gibi görünüyor. – user2864740

cevap

1

Ben sadece 1 bayt istiyorsanız hangi neden birden (örn. Neden döngü kullanılıyor) yazılı ediliyor, bu kadar büyük endian

try (DataOutputStream os = new DataOutputStream(
          new FileOutputStream(
           fileChooser.getSelectedFile() + ".soit"))) { 
    os.writeByte((byte) 511); // write just the lowest 8-bits. 
} 
+0

Ama bu 4 Byte yazacak. İlk Byte'ları nasıl alabilirim? – daemoner119

+0

@ daemoner119 Cevabımı güncelledim. –

+0

Bu yöntem benim java sürümümde mevcut değil – daemoner119