But it isn't a string. That's the point. It's a char. A char is not a one character string, it is a single element of a fundamental data type.

You cannot represent a char as a string variant. The proper value of a char is the numeric value that you are seeing returned. If you consider how you'd handle char 0 you will see why this is the case. Of course you could say a null string is a char 0. But hang on, what happens when you read 6 chars which are the the zero terminated strings "a", "b" and "c"? Your string representation will only have the first string.

That is why I asked what the difference is. A byte and a char are exactly the same, and the value you are getting back is correct.