Here you can find the source of writeString(ByteArrayOutputStream baos, String s)
public static void writeString(ByteArrayOutputStream baos, String s)
//package com.java2s; //* Licensed Materials - Property of IBM, Miracle A/S, and * import java.io.ByteArrayOutputStream; import java.io.UnsupportedEncodingException; public class Main { public static void writeString(ByteArrayOutputStream baos, String s) { try {//from w w w. j av a2 s . c o m writeData(baos, s.getBytes("UTF-8")); } catch (UnsupportedEncodingException e) { throw new RuntimeException("Cannot write string", e); } } public static void writeData(ByteArrayOutputStream baos, byte[] data) { writeLength(baos, data.length); baos.write(data, 0, data.length); } public static void writeLength(ByteArrayOutputStream baos, int len) { if (len < 0) { throw new RuntimeException("Invalid length < 0"); } if (len <= 127) { //MSB = 0 baos.write(len); } else if (len <= 16383) { // MSB = 10 int lowbyte = len % 64; int highbyte = len / 64; baos.write(lowbyte + 128); baos.write(highbyte); } else if (len <= 2097151) { // MSB = 110 int lowbyte = len % 32; int midbyte = (len / 32) % 256; int highbyte = len / 32 / 256; baos.write(lowbyte + 128 + 64); baos.write(midbyte); baos.write(highbyte); } else { throw new RuntimeException("Invalid length > 2^21-1"); } } }