From dad5f59d4a006abe3847c9bca6a5825227d01b21 Mon Sep 17 00:00:00 2001 From: Erik Johansson Date: Mon, 9 Apr 2018 22:02:30 +0200 Subject: [PATCH] Add method to convert to uint16 big-endian --- .../java/com/health/openscale/core/utils/Converters.java | 7 +++++++ .../src/test/java/com/health/openscale/ConvertersTest.java | 6 ++++++ 2 files changed, 13 insertions(+) diff --git a/android_app/app/src/main/java/com/health/openscale/core/utils/Converters.java b/android_app/app/src/main/java/com/health/openscale/core/utils/Converters.java index 836d3158..ea26186e 100644 --- a/android_app/app/src/main/java/com/health/openscale/core/utils/Converters.java +++ b/android_app/app/src/main/java/com/health/openscale/core/utils/Converters.java @@ -130,6 +130,13 @@ public class Converters { return value; } + public static byte[] toUnsignedInt16Be(int value) { + byte[] data = new byte[2]; + data[0] = (byte) ((value >> 8) & 0xFF); + data[1] = (byte) (value & 0xFF); + return data; + } + public static long fromUnsignedInt32Be(byte[] data, int offset) { long value = (long) (data[offset] & 0xFF) << 24; value += (data[offset + 1] & 0xFF) << 16; diff --git a/android_app/app/src/test/java/com/health/openscale/ConvertersTest.java b/android_app/app/src/test/java/com/health/openscale/ConvertersTest.java index ad344232..19ee4cd4 100644 --- a/android_app/app/src/test/java/com/health/openscale/ConvertersTest.java +++ b/android_app/app/src/test/java/com/health/openscale/ConvertersTest.java @@ -88,6 +88,12 @@ public class ConvertersTest { assertEquals(0xfefc, Converters.fromUnsignedInt16Be(data, 1)); assertEquals(0xfc10, Converters.fromUnsignedInt16Be(data, 2)); assertEquals(0x107f, Converters.fromUnsignedInt16Be(data, 3)); + + data = new byte[]{(byte) 0xff, (byte) 0xfe}; + assertArrayEquals(data, Converters.toUnsignedInt16Be(0xfffe)); + assertEquals(0xffff, + Converters.fromUnsignedInt16Be( + Converters.toUnsignedInt16Be(0xffff), 0)); } @Test