Пожалуйста, будьте крайне осторожны с вашей терминологией, иначе вы запутаетесь. Не существует такого понятия, как «смещение байта в строку Java». Строки Java состоят из 16-битных символов.
Итак, я предполагаю, что у вас есть байтовый массив и смещение, и вы хотите преобразовать его в строку Java и при этом сохранить местоположения (чтобы вы могли отображать их туда и обратно).
Это зависит от кодировки массива байтов. Если это UTF-8, то любой байт, для которого установлен MSB, является частью последовательности кодирования. Ищите байт, который byte & 0xc0 == 0xc0
. Это начало последовательности кодирования (см. Статью Википедии ).
Если вы спрашиваете о символах, тогда кодировка UTF-16, и вам нужно искать суррогатных пар .