public static int formatUtf8CharSequence()

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


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

        for (int i = 0, length = value.length(); i < length; i++) {
            final char c = value.charAt(i);

            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, i++, length);
                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;
    }