For certain hash functions in Java it would be nice to see the value as an unsigned integer (e.g. for comparison to other implementations) but Java supports only signed type
The standard way in Java 8 is Integer.toUnsignedLong(someInt), which is equivalent to @Mysticial's answer.
Guava provides UnsignedInts.toLong(int)...as well as a variety of other utilities on unsigned integers.
Just my 2 cents here, but I think it's a good practice to use:
public static long getUnsignedInt(int x) {
return x & (~0L); // ~ has precedence over & so no real need for brackets
}
instead of:
return x & 0xFFFFFFFFL;
In this situation there's not your concern how many 'F's the mask has. It shall always work!
Something like this?
int x = -1;
long y = x & 0x00000000ffffffffL;
Or am I missing something?
public static long getUnsignedInt(int x) {
return x & 0x00000000ffffffffL;
}
You can use a function like
public static long getUnsignedInt(int x) {
return x & (-1L >>> 32);
}
however in most cases you don't need to do this. You can use workarounds instead. e.g.
public static boolean unsignedEquals(int a, int b) {
return a == b;
}
For more examples of workarounds for using unsigned values. Unsigned utility class
long abs(int num){
return num < 0 ? num * -1 : num;
}