What is a ‘binary-safe’ string?

What do people mean when they say “binary-safe strings”? In C, strings are traditionally represented as a pointer to bytes, i.e. char*, where the array of bytes is terminated by a “null byte” (i.e. '\0', i.e. 0). This representation has the disadvantage that your string of bytes cannot itself contain a null byte, and so this structure cannot represent arbitrary strings of bytes. That is, C-strings are not “binary-safe”.

Binary-safe strings in C are typically implemented with an explicit known length. Something like:

struct bytestring {
  size_t len;
  unsigned char * bytes;
};
Tagged #c, #programming.

Similar posts

More by Jim

Want to build a fantastic product using LLMs? I work at Granola where we're building the future IDE for knowledge work. Come and work with us! Read more or get in touch!

This page copyright James Fisher 2016. Content is not associated with my employer. Found an error? Edit this page.