سؤال

لدي إطار 22 بايت. الإطار هو دفق الإدخال من مقياس التسارع عبر البلوتوث. قراءات Acceleromter هي رقم 16 بتات تقسيم على اثنين من البايتات.

عندما أحاول دمج البايتات مع المخزن المؤقت [1] + المخزن المؤقت [2] ، بدلاً من إضافة البايتات ، فإنه يضع النتائج جنبًا إلى جنب. لذلك 1+2 = 12.

هل يمكن لشخص ما أن يخبرني كيف أجمع هذين البايتين للحصول على الرقم الأصلي. (راجع للشغل يتم إرسال البايتات الصغيرة)

شكرًا

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

المحلول

هذا هو الرمز:

public static short twoBytesToShort(byte b1, byte b2) {
          return (short) ((b1 << 8) | (b2 & 0xFF));
}

نصائح أخرى

إليك إجابة أفضل قد تكون أكثر منطقية ...

public static short twoBytesToShort(byte b1, byte b2) {
          return (short) ((b1 << 8) | b2);
}

(B2 & 0xFF) يخرج بنفس النمط الثنائي الدقيق.

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