سؤال

ونحن نحاول تحويل من سلسلة لByte[] باستخدام جافا البرمجية التالية:

String source = "0123456789";
byte[] byteArray = source.getBytes("UTF-16");

ونحصل على مجموعة بايت طول 22 بايت، لسنا متأكدين من أين يأتي هذا الحشو من. كيف يمكنني الحصول على مجموعة من طول 20؟

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

المحلول

ويوضح

الكسندر الجواب السبب في أنه من هناك، ولكن ليس في كيفية تخلص منه. تحتاج ببساطة لتحديد endianness التي تريدها في اسم ترميز:

String source = "0123456789";
byte[] byteArray = source.getBytes("UTF-16LE"); // Or UTF-16BE

نصائح أخرى

قد يكون بايت الأولين هي بايت علامة ترتيب . وهي تحدد ترتيب بايت في كل كلمة 16 بت المستخدمة في الترميز.

وحاول الطباعة من وحدات البايت في عرافة لنرى أين يتم إضافة 2 بايت إضافية - هم في بداية أو نهاية

وأنا قطف أن عليك أن تجد ترتيب بايت علامة في بداية (0xFEFF ) - وهذا يسمح لأي شخص المستهلكة (استقبال) صفيف بايت للاعتراف ما إذا كان الترميز هو endian طفيف أو endian كبيرة

وUTF لديه علامة ترتيب البايت في البداية أن يقول أن هذا التيار هو المشفرة في شكل معين. كما أشار المستخدمين الآخرين بها، و
بايت 1ST هو 0XFE
بايت 2ND هو عشرية 0xFF
بايت المتبقية هي
0
48
0
49
0
50
0
51
0
52
0
53
0
54
0
55
0
56
0
57

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