001/* 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017 018package org.apache.commons.codec.net; 019 020import org.apache.commons.codec.DecoderException; 021 022/** 023 * Utility methods for this package. 024 * 025 * <p>This class is immutable and thread-safe.</p> 026 * 027 * @version $Id: Utils.java 1458495 2013-03-19 20:19:13Z sebb $ 028 * @since 1.4 029 */ 030class Utils { 031 032 /** 033 * Returns the numeric value of the character <code>b</code> in radix 16. 034 * 035 * @param b 036 * The byte to be converted. 037 * @return The numeric value represented by the character in radix 16. 038 * 039 * @throws DecoderException 040 * Thrown when the byte is not valid per {@link Character#digit(char,int)} 041 */ 042 static int digit16(final byte b) throws DecoderException { 043 final int i = Character.digit((char) b, URLCodec.RADIX); 044 if (i == -1) { 045 throw new DecoderException("Invalid URL encoding: not a valid digit (radix " + URLCodec.RADIX + "): " + b); 046 } 047 return i; 048 } 049 050}