Что бы составить строку? Вы ожидаете простой ASCII? UTF-8? Или текст закодирован как-то иначе?
Если вы знаете, что собираетесь получить текст ASCII или большой двоичный объект, тогда вы можете просто прокрутить первые n
байты и посмотреть, есть ли у чего-либо установленный восьмибитный бит, который скажет вам, что у вас есть двоичный файл. OTOH, ничего не найдя не гарантирует, что у вас есть текст.
Если вы собираетесь получить Unicode UTF-8, вы должны сделать то же самое, но искать недопустимые последовательности UTF-8. Конечно, применяются те же предостережения.
Вы можете отсканировать первые n
байтов для любых значений от 0x00 до 0x20. Если вы найдете какой-либо младший байт, то у вас, вероятно, есть двоичный двоичный объект. Но, возможно, нет.
Как сказал Тайлер Ивс: байты - это байты. Вы начинаете с нескольких байтов и пытаетесь найти их толкование, которое имеет смысл.
Лучше всего сделать так, чтобы вызывающий абонент предоставил ожидаемую интерпретацию или воспользовался советом Грега и использовал библиотеку магических чисел.