Я перед любопытной проблемой. Некоторый код лучше, чем длинная история:Почему размер приемника String меньше первоначального размера ByteArrayOutputStream при вызове toString()
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
buffer.write(...); // I write byte[] data
// In debugger I can see that buffer's count = 449597
String szData = buffer.toString();
int iSizeData = buffer.size();
// But here, szData's count = 240368
// & iSizeData = 449597
Так что мой вопрос: почему szData не содержит все данные этого буфера? (только один поток запускает этот код), потому что после такого рода операций я не хочу szData.charAt (iSizeData - 1) сбой!
EDIT: szData.getBytes(). Длина = 450566. Я думаю, что есть проблемы с кодированием. Лучше использовать байт [] вместо строки?
Многобайтовые символы, возможно? – Shark
@Shark Не возможно, определенно: http://stackoverflow.com/questions/16270994/difference-between-string-length-and-string-getbytes-length –
@JozefChocholacek О, я уверен, что это * определенно *, но без OP, отправляющий байты/символы, я могу только догадываться. – Shark