static public int calculateByteLength()

in ch-commons-charset/src/main/java/com/cloudhopper/commons/charset/ModifiedUTF8Charset.java [177:208]


    static public int calculateByteLength(CharSequence charSeq, char[] charBuffer, int charOffset, int charLength) {
        int c = 0;
        int byteLength = 0;
        int charPos = charOffset;       // start at char offset
        int charAbsLength = charPos + charLength;
        
        if (charBuffer == null) {
            if (charSeq == null) {
                return 0;
            }
            // use charSequence rather than charBuffer
            charOffset = 0;
            charAbsLength = charSeq.length();
        }
        
        for (; charPos < charAbsLength; charPos++) {
            // optimized method for getting char to encode
            if (charBuffer != null) {
                c = charBuffer[charPos];
            } else {
                c = charSeq.charAt(charPos);
            }
            if ((c >= 0x0000) && (c <= 0x007F)) {
                byteLength++;
            } else if (c > 0x07FF) {
                byteLength += 3;
            } else {
                byteLength += 2;
            }
        }
        return byteLength;
    }