Java short to hex

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 

Источник

Читайте также:  Php error bool false
Оцените статью