Here you can find the source of toChars(final int cp, final char[] buffer, final int offset)
Parameter | Description |
---|---|
cp | a parameter |
buffer | a parameter |
offset | a parameter |
public static int toChars(final int cp, final char[] buffer, final int offset)
//package com.java2s; /*/*from w w w .jav a 2 s. c o m*/ * This program is free software; you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software * Foundation. * * You should have received a copy of the GNU Lesser General Public License along with this * program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html * or from the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU Lesser General Public License for more details. * * Copyright (c) 2006 - 2013 Pentaho Corporation and Contributors. All rights reserved. */ public class Main { /** * Converts the given codepoint into the given character array. The return value indicates either success or failure. * The conversion will fail, if the given array does not contain enough space for the decoded character. In that case * either -1 (one char missing) or -2 (two chars missing) is returned. On success either 1 or 2 is returned to * indicate the number of chars added. * <p/> * If the buffer has space for at least two chars, then the negative index will never be returned. * * @param cp * @param buffer * @param offset * @return the number of chars added or the number of additional chars required. */ public static int toChars(final int cp, final char[] buffer, final int offset) { if (cp < 0x10000) { if (offset >= buffer.length) { return -1; } // maybe simple .. if (cp < 0) { // invalid .. buffer[offset] = 0xffff; } else if (cp >= 0xdc00 && cp < 0xE000) { // invalid .. buffer[offset] = 0xffff; } else { buffer[offset] = (char) (cp & 0xFFFF); } return 1; } else { if (cp > 0x10FFFF) { if (offset >= buffer.length) { return -1; } // invalid .. buffer[offset] = 0xffff; return 1; } if (offset + 1 >= buffer.length) { return -2; } // convert ... final int derivedSourceItem = cp - 0x10000; final int highWord = 0xD800 | ((derivedSourceItem & 0xFFC00) >> 10); final int lowWord = 0xDC00 | (derivedSourceItem & 0x3FF); buffer[offset] = (char) highWord; buffer[offset + 1] = (char) lowWord; return 2; } } }