public static int formatUtf8CharSequence()

in gflog-core/src/main/java/com/epam/deltix/gflog/core/util/Formatting.java [688:721]


    public static int formatUtf8CharSequence(final @Nonnull CharSequence value,
                                             @Nonnegative int start,
                                             final @Nonnegative int end,
                                             final @Nonnull byte[] array,
                                             @Nonnegative int offset) {
        // Preconditions:
        // assert value != null;
        // assert start <= end && start >=0 && end >= 0;
        // assert array != null;
        // assert offset >= 0;

        for (; start < end; start++) {
            final char c = value.charAt(start);

            if (c <= 0x007F) {
                array[offset++] = (byte) c;
            } else if (c <= 0x07FF) {
                array[offset++] = (byte) (0b11000000 | c >> 6);
                array[offset++] = (byte) (0b10000000 | c & 0b111111);
            } else if (!Character.isSurrogate(c)) {
                array[offset++] = (byte) (0b11100000 | c >> 12);
                array[offset++] = (byte) (0b10000000 | c >> 6 & 0b111111);
                array[offset++] = (byte) (0b10000000 | c & 0b111111);
            } else {
                final int code = codePointAt(value, start++, end);
                array[offset++] = (byte) (0b11110000 | code >> 18);
                array[offset++] = (byte) (0b10000000 | code >> 12 & 0b111111);
                array[offset++] = (byte) (0b10000000 | code >> 6 & 0b111111);
                array[offset++] = (byte) (0b10000000 | code & 0b111111);
            }
        }

        return offset;
    }