Qu'est-ce qui constituerait une chaîne? Attendez-vous un ASCII simple? UTF-8? Ou texte codé d'une autre manière? Si vous savez que vous allez obtenir du texte ASCII ou un blob, alors vous pouvez simplement faire défiler les premiers n
octets et voir si quelque chose a huit bits, ce qui vous dirait que vous avez binaire. OTOH, ne rien trouver ne garantirait pas que vous aviez du texte.
Si vous voulez obtenir UTF-8 Unicode alors vous feriez la même chose mais recherchez des séquences UTF-8 invalides. Bien sûr, les mêmes mises en garde s'appliquent.
Vous pouvez numériser les premiers n
octets pour tout ce qui se situe entre 0x00 et 0x20. Si vous trouvez des octets si bas alors vous avez probablement un blob binaire quelconque. Mais peut-être pas. Comme le dit Tyler Eaves, les octets sont des octets. Vous commencez avec un tas d'octets et essayez d'en trouver une interprétation qui a du sens.
Le mieux est de faire en sorte que l'appelant fournisse l'interprétation attendue ou de suivre les conseils de Greg et d'utiliser une bibliothèque de nombres magiques.
Je suis d'accord avec vous et j'ai choisi le premier choix et je pense que c'est peut-être plus simple. Merci beaucoup. – ywenbo