Hexadecimal to Integer in Java

Hexadecimal to Integer in Java

Why do you not use the java functionality for that:

If your numbers are small (smaller than yours) you could use: Integer.parseInt(hex, 16) to convert a Hex - String into an integer.

  String hex = "ff"
int value = Integer.parseInt(hex, 16);

For big numbers like yours, use public BigInteger(String val, int radix)

  BigInteger value = new BigInteger(hex, 16);

@See JavaDoc:

  • Integer.parseInt(String value, int radix)
  • BigInteger(String value, int radix)

Convert hex string to int

It's simply too big for an int (which is 4 bytes and signed).

Use

Long.parseLong("AA0F245C", 16);

Convert Java String hexadecimal number to int hexadecimal number

You don't need to convert it. There is no such thing as a hex number. A number written in hex is a number written in a base 16 notation. We normally use base 10 notation so we have digits from 0 to 9 but in hex notation you have digits from 0 to F.
So just do a and operation :

int offsetData = address & decimalShift;

EDIT:
To get only the lower 16 bit use a mask.
0xffff and perform a & operation the upper 16 bits will be set to 0 and the lower 16 will remain unchanged.
so:

int offsetData = address & decimalShift & 0xffff;

EDIT2:
To get a mask for any number(0,...,31) of bits you can use this function:

private static int getMask(int numOfOnes) {
int i = 0x80000000;
i = i>>(32-numOfOnes-1);
i = ~i;
return i;
}

Pauls explanation: "bitshifting with >> fills the most signifcant bits with the value of the MSB before shifting, so in this code all bits except for the numOfOnes lowest bits are filled with 1s and afterwards the number is inverted."

Converting from hex to int in java

ffffffde is bigger than integer max value

Java int is 32 bit signed type ranges from –2,147,483,648 to 2,147,483,647.

ffffffde = 4,294,967,262 

Edit

You used Integer.toHexString(int_val) to turn a int into a hex string. From the doc of that method:

Returns a string representation of the integer argument as an unsigned integer in base 16.

But int is a signed type.

USE

int value = new BigInteger("ffffffde", 16).intValue();

to get it back as a negative value.

Converting hexadecimal colour string back to integer

You have two possibilities to convert a hex representation to int.

By casting a parsed long to int

int color = (int) Long.parseLong(hex, 16);

or by using a BigInteger to parse the value

int color = new BigInteger(hex, 16).intValue();

Some time in the future you might also be able to use the Java 8 method for parsing unsigned int values

int color = Integer.parseUnsignedInt(hex, 16);

store hex value (0x45E213) in an integer

http://docs.oracle.com/javase/6/docs/api/java/lang/Integer.html

The Integer constructor with a string behaves the same as parseInt with radix 10. You presumably want String.parseInt with radix 16.

Integer.parseInt("45E213", 16)

or to cut off the 0x

Integer.parseInt("0x45E213".substring(2), 16);

or

Integer.parseInt("0x45E213".replace("0x",""), 16);

Convert a large number to hex in Java

BigInteger::toString( radix )

Call BigInteger::toString and pass 16 to get hexadecimal text.

Do it as follows:

import java.math.BigInteger;

public class Main {
public static void main(String[] args) {
String value =
new BigInteger("11265437495266153437", 10)
.toString(16)
.toUpperCase()
;
System.out.println(value);
}
}

Output:

9C56DFB710B493DD

Note that the default radix is 10 so you can skip it and use new BigInteger("11265437495266153437") instead which is without any radix parameter.



Related Topics



Leave a reply



Submit