- Short toHexString
- 5 Answers 5
- Java Convert short to Hexadecimal String
- How to convert short to hexadecimal String in Java
- Java short to hex
- Field Summary
- Constructor Summary
- Method Summary
- Methods inherited from class java.lang.Object
- Field Detail
- MIN_VALUE
- MAX_VALUE
- TYPE
- SIZE
- BYTES
- Constructor Detail
- Short
- Short
- Method Detail
- toString
- parseShort
- parseShort
- valueOf
- valueOf
- valueOf
- decode
- byteValue
- shortValue
- How to format numbers to a hex strings?
- 9 Answers 9
- Java 17+
Short toHexString
There are methods Integer.toHexString() and Long.toHexString() . For some reason they didn’t implement Short.toHexString() . What is the canonical method converting Short to a hex string? It’s not possible to use Integer.toHexString() because Integer.toHexString(-33) equals ffffffdf which is not a short value.
Isn’t it sufficient to substr the 4 least-significant hex characters (from Integer.toHexString)? In the posted case it would be valid ( ffdf ), and I think it would universally hold as both are two’s complement ..
Actually, even this System.out.format(«%x», -33) gives ffffffdf . I guess it might have something to do with representation of primitives in memory.
5 Answers 5
If in your system short is represented as 16Bit you can also simply do the following.
String hex = Integer.toHexString(-33 & 0xffff);
Yes, you can simply take the two least-significant bytes.
This is a basic feature of the Two’s Complement representation.
You can convert your Integer.toHexString in to a hex string for short value.
Integer is of 32 bit , and Short is of 16 bit . So, you can just remove the 16 most significant bit from Hex String for short value converted to integer , to get a Hex String for Short .
Integer -> -33 = 11111111 11111111 11111111 11011111 == Hex = ffffffdf Short -> -33 = 11111111 11011111 == Hex = ffdf
So, just take the last 4 characters of Hex String to get what you want.
Short sh = -33; String intHexString = Integer.toHexString(sh.intValue()); String shortHexString = intHexString.substring(4);
Java Convert short to Hexadecimal String
In this Java core tutorial we learn how to convert a short value to a hexadecimal String in Java programming language.
How to convert short to hexadecimal String in Java
In Java, with a given short value we can use the Integer.toHexString(int i) static method to convert it to String in hexadecimal base 16 as the following Java program.
public class ConvertShortToHexExample1 public static void main(String. args) short shortValue = 512; // Convert short to Hexadecimal String String hexString = Integer.toHexString(shortValue); System.out.println("short value: " + shortValue); System.out.println("hexadecimal value: " + hexString); > >
short value: 512 hexadecimal value: 200
Java short to hex
The Short class wraps a value of primitive type short in an object. An object of type Short contains a single field whose type is short . In addition, this class provides several methods for converting a short to a String and a String to a short , as well as other constants and methods useful when dealing with a short .
Field Summary
Constructor Summary
Constructs a newly allocated Short object that represents the short value indicated by the String parameter.
Method Summary
Returns the value obtained by reversing the order of the bytes in the two’s complement representation of the specified short value.
Returns a Short object holding the value extracted from the specified String when parsed with the radix given by the second argument.
Methods inherited from class java.lang.Object
Field Detail
MIN_VALUE
public static final short MIN_VALUE
MAX_VALUE
public static final short MAX_VALUE
TYPE
SIZE
public static final int SIZE
BYTES
public static final int BYTES
Constructor Detail
Short
Short
public Short(String s) throws NumberFormatException
Constructs a newly allocated Short object that represents the short value indicated by the String parameter. The string is converted to a short value in exactly the manner used by the parseShort method for radix 10.
Method Detail
toString
parseShort
public static short parseShort(String s, int radix) throws NumberFormatException
- The first argument is null or is a string of length zero.
- The radix is either smaller than Character.MIN_RADIX or larger than Character.MAX_RADIX .
- Any character of the string is not a digit of the specified radix, except that the first character may be a minus sign ‘-‘ ( ‘\u002D’ ) or plus sign ‘+’ ( ‘\u002B’ ) provided that the string is longer than length 1.
- The value represented by the string is not a value of type short .
parseShort
public static short parseShort(String s) throws NumberFormatException
Parses the string argument as a signed decimal short . The characters in the string must all be decimal digits, except that the first character may be an ASCII minus sign ‘-‘ ( ‘\u002D’ ) to indicate a negative value or an ASCII plus sign ‘+’ ( ‘\u002B’ ) to indicate a positive value. The resulting short value is returned, exactly as if the argument and the radix 10 were given as arguments to the parseShort(java.lang.String, int) method.
valueOf
public static Short valueOf(String s, int radix) throws NumberFormatException
Returns a Short object holding the value extracted from the specified String when parsed with the radix given by the second argument. The first argument is interpreted as representing a signed short in the radix specified by the second argument, exactly as if the argument were given to the parseShort(java.lang.String, int) method. The result is a Short object that represents the short value specified by the string. In other words, this method returns a Short object equal to the value of:
valueOf
public static Short valueOf(String s) throws NumberFormatException
Returns a Short object holding the value given by the specified String . The argument is interpreted as representing a signed decimal short , exactly as if the argument were given to the parseShort(java.lang.String) method. The result is a Short object that represents the short value specified by the string. In other words, this method returns a Short object equal to the value of:
valueOf
Returns a Short instance representing the specified short value. If a new Short instance is not required, this method should generally be used in preference to the constructor Short(short) , as this method is likely to yield significantly better space and time performance by caching frequently requested values. This method will always cache values in the range -128 to 127, inclusive, and may cache other values outside of this range.
decode
public static Short decode(String nm) throws NumberFormatException
Decodes a String into a Short . Accepts decimal, hexadecimal, and octal numbers given by the following grammar:
DecodableString: Signopt DecimalNumeral Signopt 0x HexDigits Signopt 0X HexDigits Signopt # HexDigits Signopt 0 OctalDigits Sign: — +
DecimalNumeral, HexDigits, and OctalDigits are as defined in section 3.10.1 of The Java™ Language Specification , except that underscores are not accepted between digits. The sequence of characters following an optional sign and/or radix specifier (» 0x «, » 0X «, » # «, or leading zero) is parsed as by the Short.parseShort method with the indicated radix (10, 16, or 8). This sequence of characters must represent a positive value or a NumberFormatException will be thrown. The result is negated if first character of the specified String is the minus sign. No whitespace characters are permitted in the String .
byteValue
shortValue
How to format numbers to a hex strings?
I want to format int numbers as hex strings. System.out.println(Integer.toHexString(1)); prints 1 but I want it as 0x00000001 . How do I do that?
9 Answers 9
System.out.println(String.format("0x%08X", 1));
You can use the String.format to format an integer as a hex string.
System.out.println(String.format("0x%08X", 1));
That is, pad with zeros, and make the total width 8. The 1 is converted to hex for you. The above line gives: 0x00000001 and
System.out.println(String.format("0x%08X", 234));
From formatting syntax documented on Java’s Formatter class:
Integer intObject = Integer.valueOf(1); String s = String.format("0x%08x", intObject); System.out.println(s);
System.out.printf("0x%08x", 1); //"Use %0X for upper case letters
Java 17+
There is a new immutable class dedicated to conversion into and formatting hexadecimal numbers. The easiest way to go is using HexFormat::toHexDigits which includes leading zeroes:
String hex = "0x" + HexFormat.of().toHexDigits(1); // 0x00000001
Beware, one has to concatenate with the «0x» prefix as such method ignores defined prefixes and suffixes, so the following snippet doesn’t work as expected (only HexFormat::formatHex methods work with them):
String hex = HexFormat.of().withPrefix("0x").toHexDigits(1); // 00000001
Returns the eight hexadecimal characters for the int value. Each nibble (4 bits) from most significant to least significant of the value is formatted as if by toLowHexDigit(nibble) . The delimiter, prefix and suffix are not used.
Alternatively use the advantage of HexFormat::formatHex formatting to two hexadecimal characters, and a StringBuilder as an Appendable prefix containing «0x» :
Each byte value is formatted as the prefix, two hexadecimal characters selected from uppercase or lowercase digits, and the suffix.
StringBuilder hex = HexFormat.of() .formatHex(new StringBuilder("0x"), new byte[] ); // 0x00000001
StringBuilder hex = HexFormat.of() .formatHex(new StringBuilder("0x"), ByteBuffer.allocate(4).putInt(1).array()); // 0x00000001