سؤال

أحاول كتابة TIFF IFDS ، وأنا أبحث عن طريقة بسيطة للقيام بما يلي (من الواضح أن هذا الرمز خاطئ ولكنه يحصل على الفكرة عبر ما أريد):

out.writeChar(12) (bytes 0-1)
out.writeChar(259) (bytes 2-3)
out.writeChar(3) (bytes 4-5)
out.writeInt(1) (bytes 6-9)
out.writeInt(1) (bytes 10-13)

سيكتب:

0C00 0301 0300 0100 0000 0100 0000

أعرف كيفية الحصول على طريقة الكتابة لتولي العدد الصحيح من البايتات (الكتابة ، Writechar ، إلخ) ، لكنني لا أعرف كيف أحصل على الكتابة في Little Endian. أي أحد يعرف؟

هل كانت مفيدة؟

المحلول

ربما يجب أن تجرب شيئًا كهذا:

ByteBuffer buffer = ByteBuffer.allocate(1000); 
buffer.order(ByteOrder.LITTLE_ENDIAN);         
buffer.putChar((char) 12);                     
buffer.putChar((char) 259);                    
buffer.putChar((char) 3);                      
buffer.putInt(1);                              
buffer.putInt(1);                              
byte[] bytes = buffer.array();     

نصائح أخرى

يبدو أن Bytebuffer هو الخيار الأفضل. يمكنك أيضًا كتابة بعض وظائف الراحة مثل هذا ،

public static void writeShortLE(DataOutputStream out, short value) {
  out.writeByte(value & 0xFF);
  out.writeByte((value >> 8) & 0xFF);
}

public static void writeIntLE(DataOutputStream out, int value) {
  out.writeByte(value & 0xFF);
  out.writeByte((value >> 8) & 0xFF);
  out.writeByte((value >> 16) & 0xFF);
  out.writeByte((value >> 24) & 0xFF);
}

الدفع Bytebuffer, على وجه التحديد ''طلب' طريقة. Bytebuffer هي نعمة لأولئك منا الذين يحتاجون إلى التفاعل مع أي شيء وليس جافا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top