Today I was presented with a very nasty problem and I do not quite know where to ask this but hope here is ok.

So I have the following string: `"\0"` (at least that's how it looks in visual studio). If you open the same file in notepad++ it looks like this: `"\0SOH"`. so yes, I have reached a point where I need to check a string which has non printable characters. The problem is the string I am comparing against are hardcoded and would come to look like this:

    switch (s)
    {
    	case "\0\0":
    		Console.WriteLine("Crypto method 00");
    		break;
    	case "\0":
    		Console.WriteLine("Crypto method 01");
    		break;
    	case "\0":
    		Console.WriteLine("Crypto method 02");
    		break;
    	case "\0":
    		Console.WriteLine("Crypto method 03");
    		break;
    	default:
    		Console.WriteLine(s);
    		break;
    }

[complete example code can be found on pastbin for the next month][1]

But **the code is not important**, this, the display of this code, it is horrible and that's the problem. I cannot possibly commit something like this because no one will know what is happening.

Of course I could add comments so my co-workers will know what's going on but to me that does not seem like the proper solution. so **my question** what is the proper solution to create understandable code in this situation? *Do I ask my co-workers to rewrite their code to make it work with byte arrays? Do I simply keep it this way?*

A way to resolve this in code would be: `ASCIIEncoding.Default.GetString(new byte[]{0, 1});` but this 'hack' does not really make it more understandable.

To clarify, I am **not looking for a code fix**, I can think of several (such as mentioned above) I am looking for advice on how to handle this or perhaps a way to make sure the (for example Visual studio) editor will distinguish between them.

----------
**Some extra context**<br>
A piece of old code handling the TCP connection receives the data (like it should) and then returns a string, it uses ASCII encode to create a string from the received byte[].

We have now gotten to a point where higher on we need to set/read a few status bytes which, because of the way we get messages from the TCP layer result in unreadable strings.

It is possible to rewrite the TCP to only send byte[] arrays but this is going to take up more time than anyone is willing to put in.

  [1]: http://pastebin.com/0LrB932t