⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 asciiutility.java

📁 java Email you can use it to send email to others
💻 JAVA
字号:
/* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved. * * The contents of this file are subject to the terms of either the GNU * General Public License Version 2 only ("GPL") or the Common Development * and Distribution License("CDDL") (collectively, the "License").  You * may not use this file except in compliance with the License. You can obtain * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific * language governing permissions and limitations under the License. * * When distributing the software, include this License Header Notice in each * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt. * Sun designates this particular file as subject to the "Classpath" exception * as provided by Sun in the GPL Version 2 section of the License file that * accompanied this code.  If applicable, add the following below the License * Header, with the fields enclosed by brackets [] replaced by your own * identifying information: "Portions Copyrighted [year] * [name of copyright owner]" * * Contributor(s): * * If you wish your version of this file to be governed by only the CDDL or * only the GPL Version 2, indicate your decision by adding "[Contributor] * elects to include this software in this distribution under the [CDDL or GPL * Version 2] license."  If you don't indicate a single choice of license, a * recipient has the option to distribute your version of this file under * either the CDDL, the GPL Version 2 or to extend the choice of license to * its licensees as provided above.  However, if you add GPL Version 2 code * and therefore, elected the GPL Version 2 license, then the option applies * only if the new code is made subject to such option by the copyright * holder. *//* * @(#)ASCIIUtility.java	1.11 07/05/04 */package com.sun.mail.util;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.InputStream;import java.io.IOException;public class ASCIIUtility {    // Private constructor so that this class is not instantiated    private ASCIIUtility() { }	    /**     * Convert the bytes within the specified range of the given byte      * array into a signed integer in the given radix . The range extends      * from <code>start</code> till, but not including <code>end</code>. <p>     *     * Based on java.lang.Integer.parseInt()     */    public static int parseInt(byte[] b, int start, int end, int radix)		throws NumberFormatException {	if (b == null)	    throw new NumberFormatException("null");		int result = 0;	boolean negative = false;	int i = start;	int limit;	int multmin;	int digit;	if (end > start) {	    if (b[i] == '-') {		negative = true;		limit = Integer.MIN_VALUE;		i++;	    } else {		limit = -Integer.MAX_VALUE;	    }	    multmin = limit / radix;	    if (i < end) {		digit = Character.digit((char)b[i++], radix);		if (digit < 0) {		    throw new NumberFormatException(			"illegal number: " + toString(b, start, end)			);		} else {		    result = -digit;		}	    }	    while (i < end) {		// Accumulating negatively avoids surprises near MAX_VALUE		digit = Character.digit((char)b[i++], radix);		if (digit < 0) {		    throw new NumberFormatException("illegal number");		}		if (result < multmin) {		    throw new NumberFormatException("illegal number");		}		result *= radix;		if (result < limit + digit) {		    throw new NumberFormatException("illegal number");		}		result -= digit;	    }	} else {	    throw new NumberFormatException("illegal number");	}	if (negative) {	    if (i > start + 1) {		return result;	    } else {	/* Only got "-" */		throw new NumberFormatException("illegal number");	    }	} else {	    return -result;	}    }    /**     * Convert the bytes within the specified range of the given byte      * array into a signed integer . The range extends from      * <code>start</code> till, but not including <code>end</code>. <p>     */    public static int parseInt(byte[] b, int start, int end)		throws NumberFormatException {	return parseInt(b, start, end, 10);    }    /**     * Convert the bytes within the specified range of the given byte      * array into a signed long in the given radix . The range extends      * from <code>start</code> till, but not including <code>end</code>. <p>     *     * Based on java.lang.Long.parseLong()     */    public static long parseLong(byte[] b, int start, int end, int radix)		throws NumberFormatException {	if (b == null)	    throw new NumberFormatException("null");		long result = 0;	boolean negative = false;	int i = start;	long limit;	long multmin;	int digit;	if (end > start) {	    if (b[i] == '-') {		negative = true;		limit = Long.MIN_VALUE;		i++;	    } else {		limit = -Long.MAX_VALUE;	    }	    multmin = limit / radix;	    if (i < end) {		digit = Character.digit((char)b[i++], radix);		if (digit < 0) {		    throw new NumberFormatException(			"illegal number: " + toString(b, start, end)			);		} else {		    result = -digit;		}	    }	    while (i < end) {		// Accumulating negatively avoids surprises near MAX_VALUE		digit = Character.digit((char)b[i++], radix);		if (digit < 0) {		    throw new NumberFormatException("illegal number");		}		if (result < multmin) {		    throw new NumberFormatException("illegal number");		}		result *= radix;		if (result < limit + digit) {		    throw new NumberFormatException("illegal number");		}		result -= digit;	    }	} else {	    throw new NumberFormatException("illegal number");	}	if (negative) {	    if (i > start + 1) {		return result;	    } else {	/* Only got "-" */		throw new NumberFormatException("illegal number");	    }	} else {	    return -result;	}    }    /**     * Convert the bytes within the specified range of the given byte      * array into a signed long . The range extends from      * <code>start</code> till, but not including <code>end</code>. <p>     */    public static long parseLong(byte[] b, int start, int end)		throws NumberFormatException {	return parseLong(b, start, end, 10);    }    /**     * Convert the bytes within the specified range of the given byte      * array into a String. The range extends from <code>start</code>     * till, but not including <code>end</code>. <p>     */    public static String toString(byte[] b, int start, int end) {	int size = end - start;	char[] theChars = new char[size];	for (int i = 0, j = start; i < size; )	    theChars[i++] = (char)(b[j++]&0xff);		return new String(theChars);    }    public static String toString(ByteArrayInputStream is) {	int size = is.available();	char[] theChars = new char[size];	byte[] bytes    = new byte[size];	is.read(bytes, 0, size);	for (int i = 0; i < size;)	    theChars[i] = (char)(bytes[i++]&0xff);		return new String(theChars);    }    public static byte[] getBytes(String s) {	char [] chars= s.toCharArray();	int size = chars.length;	byte[] bytes = new byte[size];    		for (int i = 0; i < size;)	    bytes[i] = (byte) chars[i++];	return bytes;    }    public static byte[] getBytes(InputStream is) throws IOException {	int len;	int size = 1024;	byte [] buf;	if (is instanceof ByteArrayInputStream) {	    size = is.available();	    buf = new byte[size];	    len = is.read(buf, 0, size);	}	else {	    ByteArrayOutputStream bos = new ByteArrayOutputStream();	    buf = new byte[size];	    while ((len = is.read(buf, 0, size)) != -1)		bos.write(buf, 0, len);	    buf = bos.toByteArray();	}	return buf;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -