I have different unique strings in the same format. The string looks like this axf25!j&809>-11~dc
and I want to get unique integer value from this string.
You could just use String.hashCode()
(e.g. mystring.hashCode()
) to give you a degree of uniqueness but you must ensure you can handle collisions.
You can't guarantee unique integer values from different strings since there are more possible string representations than integers. You can use some well known/defined hashing algorithm to minimize the chance of a collision. You should look at MD5 or SHA.
The java class MessageDigest should be of some use.
You cannot generate entirely unique int
s from sufficiently long strings because there are more 10-character strings than 32-bit integers.
As far as non-unique solutions go, you can use the standard hashCode
function, its implementation in Java is reasonably good. For more complex stuff you may consider computing cryptographic hash (SHA-2, MD5, etc.)
You can try with code:
import java.math.BigInteger;
public static BigInteger stringToBigInteger(String text) {
BigInteger bigInt = new BigInteger(text.getBytes());
return bigInt;
}
thanks.
Treat the strings as a base 0x110000
representation of some integer (you can get away with a smaller base if you know the range of characters is limited). Convert to a BigInteger
.