aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/traccar/helper
diff options
context:
space:
mode:
authorAnton Tananaev <anton@traccar.org>2022-06-29 17:03:23 -0700
committerAnton Tananaev <anton@traccar.org>2022-06-29 17:03:23 -0700
commitaed0411f4ae5cfc007d27e0521a39a242fab7840 (patch)
treea704e82dc4c82e0d128e9619290ebb5cb8a66ea1 /src/main/java/org/traccar/helper
parent8921fc12ea0590c290f3780fa20df7176b8c0000 (diff)
downloadtrackermap-server-aed0411f4ae5cfc007d27e0521a39a242fab7840.tar.gz
trackermap-server-aed0411f4ae5cfc007d27e0521a39a242fab7840.tar.bz2
trackermap-server-aed0411f4ae5cfc007d27e0521a39a242fab7840.zip
Unify signed magnitude int decoding
Diffstat (limited to 'src/main/java/org/traccar/helper')
-rw-r--r--src/main/java/org/traccar/helper/BitUtil.java4
-rw-r--r--src/main/java/org/traccar/helper/BufferUtil.java6
2 files changed, 8 insertions, 2 deletions
diff --git a/src/main/java/org/traccar/helper/BitUtil.java b/src/main/java/org/traccar/helper/BitUtil.java
index b6108edff..829ddebc9 100644
--- a/src/main/java/org/traccar/helper/BitUtil.java
+++ b/src/main/java/org/traccar/helper/BitUtil.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2015 Anton Tananaev (anton@traccar.org)
+ * Copyright 2015 - 2022 Anton Tananaev (anton@traccar.org)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -21,7 +21,7 @@ public final class BitUtil {
}
public static boolean check(long number, int index) {
- return (number & (1 << index)) != 0;
+ return (number & (1L << index)) != 0;
}
public static int between(int number, int from, int to) {
diff --git a/src/main/java/org/traccar/helper/BufferUtil.java b/src/main/java/org/traccar/helper/BufferUtil.java
index 1e1a687fa..0dbe0a4ad 100644
--- a/src/main/java/org/traccar/helper/BufferUtil.java
+++ b/src/main/java/org/traccar/helper/BufferUtil.java
@@ -27,6 +27,12 @@ public final class BufferUtil {
private BufferUtil() {
}
+ public static int readSignedMagnitudeInt(ByteBuf buffer) {
+ long value = buffer.readUnsignedInt();
+ int result = (int) BitUtil.to(value, 31);
+ return BitUtil.check(value, 31) ? -result : result;
+ }
+
public static int indexOf(ByteBuf buffer, int fromIndex, int toIndex, byte value, int count) {
int startIndex = fromIndex;
for (int i = 0; i < count; i++) {