1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/* 2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more 3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * this work for additional information regarding copyright ownership. 5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * (the "License"); you may not use this file except in compliance with 7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the License. You may obtain a copy of the License at 8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See the License for the specific language governing permissions and 15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limitations under the License. 16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage java.lang; 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/** 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The wrapper for the primitive type {@code byte}. 22f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson * 23f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson * @since 1.1 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 250d4daefcf389b6433a0af481ef44a84a2546541aElliott Hughes@FindBugsSuppressWarnings("DM_NUMBER_CTOR") 26f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilsonpublic final class Byte extends Number implements Comparable<Byte> { 27f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static final long serialVersionUID = -7183698231559129828L; 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The value which the receiver represents. 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private final byte value; 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The maximum {@code Byte} value, 2<sup>7</sup>-1. 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final byte MAX_VALUE = (byte) 0x7F; 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The minimum {@code Byte} value, -2<sup>7</sup>. 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final byte MIN_VALUE = (byte) 0x80; 44f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The number of bits needed to represent a {@code Byte} value in two's 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * complement form. 48f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson * 49f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson * @since 1.5 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final int SIZE = 8; 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The {@link Class} object that represents the primitive type {@code byte}. 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @SuppressWarnings("unchecked") 57726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch public static final Class<Byte> TYPE 58726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch = (Class<Byte>) byte[].class.getComponentType(); 59e26ba79900d471d02d656f686926918ef7dc751fElliott Hughes // Note: Byte.TYPE can't be set to "byte.class", since *that* is 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // defined to be "java.lang.Byte.TYPE"; 61f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Constructs a new {@code Byte} with the specified primitive byte value. 64f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson * 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param value 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the primitive byte value to store in the new instance. 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public Byte(byte value) { 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.value = value; 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Constructs a new {@code Byte} from the specified string. 74f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson * 75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param string 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the string representation of a single byte value. 77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws NumberFormatException 788890504f824eca28560987cc23d0b18e8a62bbaaElliott Hughes * if {@code string} cannot be parsed as a byte value. 79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #parseByte(String) 80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public Byte(String string) throws NumberFormatException { 82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this(parseByte(string)); 83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Gets the primitive value of this byte. 87f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson * 88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return this object's primitive value. 89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Override 91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public byte byteValue() { 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return value; 93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Compares this object to the specified byte object to determine their 97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * relative order. 98f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson * 99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param object 100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the byte object to compare this object to. 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return a negative value if the value of this byte is less than the value 102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * of {@code object}; 0 if the value of this byte and the value of 103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code object} are equal; a positive value if the value of this 104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * byte is greater than the value of {@code object}. 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see java.lang.Comparable 106f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson * @since 1.2 107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public int compareTo(Byte object) { 109c3adcfb1339de546aed6e7ff00a7edb020b8a85bElliott Hughes return compare(value, object.value); 110c3adcfb1339de546aed6e7ff00a7edb020b8a85bElliott Hughes } 111c3adcfb1339de546aed6e7ff00a7edb020b8a85bElliott Hughes 112c3adcfb1339de546aed6e7ff00a7edb020b8a85bElliott Hughes /** 113c3adcfb1339de546aed6e7ff00a7edb020b8a85bElliott Hughes * Compares two {@code byte} values. 114c3adcfb1339de546aed6e7ff00a7edb020b8a85bElliott Hughes * @return 0 if lhs = rhs, less than 0 if lhs < rhs, and greater than 0 if lhs > rhs. 115c3adcfb1339de546aed6e7ff00a7edb020b8a85bElliott Hughes * @since 1.7 116c3adcfb1339de546aed6e7ff00a7edb020b8a85bElliott Hughes */ 117c3adcfb1339de546aed6e7ff00a7edb020b8a85bElliott Hughes public static int compare(byte lhs, byte rhs) { 118c3adcfb1339de546aed6e7ff00a7edb020b8a85bElliott Hughes return lhs > rhs ? 1 : (lhs < rhs ? -1 : 0); 119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Parses the specified string and returns a {@code Byte} instance if the 123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * string can be decoded into a single byte value. The string may be an 124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * optional minus sign "-" followed by a hexadecimal ("0x..." or "#..."), 125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * octal ("0..."), or decimal ("...") representation of a byte. 126f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson * 127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param string 128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * a string representation of a single byte value. 129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return a {@code Byte} containing the value represented by {@code string}. 130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws NumberFormatException 1318890504f824eca28560987cc23d0b18e8a62bbaaElliott Hughes * if {@code string} cannot be parsed as a byte value. 132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static Byte decode(String string) throws NumberFormatException { 1342fc5dcd5614f910f25d794d272834752a72e63b1Elliott Hughes int intValue = Integer.decode(string); 135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte result = (byte) intValue; 136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (result == intValue) { 137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return valueOf(result); 138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1391f07ea29bc2d334c55c16227582a7795b8c117c1Elliott Hughes throw new NumberFormatException("Value out of range for byte: \"" + string + "\""); 140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Override 143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public double doubleValue() { 144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return value; 145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Compares this object with the specified object and indicates if they are 149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * equal. In order to be equal, {@code object} must be an instance of 150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code Byte} and have the same byte value as this object. 151f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson * 152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param object 153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the object to compare this byte with. 154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return {@code true} if the specified object is equal to this 155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code Byte}; {@code false} otherwise. 156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Override 1580d4daefcf389b6433a0af481ef44a84a2546541aElliott Hughes @FindBugsSuppressWarnings("RC_REF_COMPARISON") 159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean equals(Object object) { 1600d4daefcf389b6433a0af481ef44a84a2546541aElliott Hughes return (object == this) || ((object instanceof Byte) && (((Byte) object).value == value)); 161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Override 164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public float floatValue() { 165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return value; 166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Override 169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public int hashCode() { 170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return value; 171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Override 174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public int intValue() { 175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return value; 176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Override 179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public long longValue() { 180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return value; 181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Parses the specified string as a signed decimal byte value. The ASCII 185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * character \u002d ('-') is recognized as the minus sign. 186f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson * 187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param string 188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the string representation of a single byte value. 189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the primitive byte value represented by {@code string}. 190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws NumberFormatException 1918890504f824eca28560987cc23d0b18e8a62bbaaElliott Hughes * if {@code string} can not be parsed as a byte value. 192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static byte parseByte(String string) throws NumberFormatException { 1941f07ea29bc2d334c55c16227582a7795b8c117c1Elliott Hughes return parseByte(string, 10); 195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Parses the specified string as a signed byte value using the specified 199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * radix. The ASCII character \u002d ('-') is recognized as the minus sign. 200f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson * 201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param string 202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the string representation of a single byte value. 203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param radix 204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the radix to use when parsing. 205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the primitive byte value represented by {@code string} using 206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code radix}. 207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws NumberFormatException 2088890504f824eca28560987cc23d0b18e8a62bbaaElliott Hughes * if {@code string} can not be parsed as a byte value, or 2098890504f824eca28560987cc23d0b18e8a62bbaaElliott Hughes * {@code radix < Character.MIN_RADIX || 2108890504f824eca28560987cc23d0b18e8a62bbaaElliott Hughes * radix > Character.MAX_RADIX}. 211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 2121f07ea29bc2d334c55c16227582a7795b8c117c1Elliott Hughes public static byte parseByte(String string, int radix) throws NumberFormatException { 213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int intValue = Integer.parseInt(string, radix); 214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte result = (byte) intValue; 215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (result == intValue) { 216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return result; 217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2181f07ea29bc2d334c55c16227582a7795b8c117c1Elliott Hughes throw new NumberFormatException("Value out of range for byte: \"" + string + "\""); 219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Override 222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public short shortValue() { 223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return value; 224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Override 227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public String toString() { 228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return Integer.toString(value); 229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 2324b25199bc0b7a64a6feaa60e7d5d6b0474341234Elliott Hughes * Returns a two-digit hex string. That is, -1 becomes "ff" or "FF" and 2 becomes "02". 2334b25199bc0b7a64a6feaa60e7d5d6b0474341234Elliott Hughes * @hide internal use only 2344b25199bc0b7a64a6feaa60e7d5d6b0474341234Elliott Hughes */ 2354b25199bc0b7a64a6feaa60e7d5d6b0474341234Elliott Hughes public static String toHexString(byte b, boolean upperCase) { 2364b25199bc0b7a64a6feaa60e7d5d6b0474341234Elliott Hughes return IntegralToString.byteToHexString(b, upperCase); 2374b25199bc0b7a64a6feaa60e7d5d6b0474341234Elliott Hughes } 2384b25199bc0b7a64a6feaa60e7d5d6b0474341234Elliott Hughes 2394b25199bc0b7a64a6feaa60e7d5d6b0474341234Elliott Hughes /** 240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns a string containing a concise, human-readable description of the 241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * specified byte value. 242f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson * 243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param value 244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the byte to convert to a string. 245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return a printable representation of {@code value}. 246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static String toString(byte value) { 248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return Integer.toString(value); 249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Parses the specified string as a signed decimal byte value. 253f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson * 254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param string 255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the string representation of a single byte value. 256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return a {@code Byte} instance containing the byte value represented by 257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code string}. 258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws NumberFormatException 2598890504f824eca28560987cc23d0b18e8a62bbaaElliott Hughes * if {@code string} can not be parsed as a byte value. 260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #parseByte(String) 261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static Byte valueOf(String string) throws NumberFormatException { 263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return valueOf(parseByte(string)); 264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Parses the specified string as a signed byte value using the specified 268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * radix. 269f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson * 270adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param string 271adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the string representation of a single byte value. 272adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param radix 273adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the radix to use when parsing. 274adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return a {@code Byte} instance containing the byte value represented by 275adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code string} using {@code radix}. 276adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws NumberFormatException 2778890504f824eca28560987cc23d0b18e8a62bbaaElliott Hughes * if {@code string} can not be parsed as a byte value, or 2788890504f824eca28560987cc23d0b18e8a62bbaaElliott Hughes * {@code radix < Character.MIN_RADIX || 2798890504f824eca28560987cc23d0b18e8a62bbaaElliott Hughes * radix > Character.MAX_RADIX}. 280adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #parseByte(String, int) 281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 2821f07ea29bc2d334c55c16227582a7795b8c117c1Elliott Hughes public static Byte valueOf(String string, int radix) throws NumberFormatException { 283adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return valueOf(parseByte(string, radix)); 284adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 285f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson 286adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns a {@code Byte} instance for the specified byte value. 288adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p> 289adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * If it is not necessary to get a new {@code Byte} instance, it is 290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * recommended to use this method instead of the constructor, since it 291adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * maintains a cache of instances which may result in better performance. 292f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson * 293adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param b 294adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the byte value to store in the instance. 295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return a {@code Byte} instance containing {@code b}. 296f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson * @since 1.5 297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static Byte valueOf(byte b) { 299726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch return VALUES[b + 128]; 300726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch } 301726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch 302726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch /** 303726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch * A cache of instances used by {@link Byte#valueOf(byte)} and auto-boxing 304726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch */ 305726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch private static final Byte[] VALUES = new Byte[256]; 306726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch 307726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch static { 308726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch for (int i = -128; i < 128; i++) { 309726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch VALUES[i + 128] = new Byte((byte) i); 310adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 311adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 312adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 313