I have a byte array similar to this (16 bytes):
71 77 65 72 74 79 00 00 00 00 00 00 00 00 00 00
I use this to convert it to a string and tr
Trim by default removes only whitespace, where whitespace is defined by char.IsWhitespace
.
'\0'
is a control character, not whitespace.
You can specify which characters to trim using the Trim(char[]) overload:
string result = Encoding.ASCII.GetString(data).Trim(new char[] { '\0' });
Why try to create the string first and trim it second? This could add a lot of overhead (if the byte[] is large).
You can specify index
and count
in the GetString(byte[] bytes, int index, int count)
overload.
int count = data.Count(bt => bt != 0); // find the first null
string result = Encoding.ASCII.GetString(data, 0, count); // Get only the characters you want
They're not really spaces:
System.Text.Encoding.ASCII.GetString(byteArray).TrimEnd('\0')
...should do the trick.
-Oisin
You have to do TrimEnd(new char[] { (char)0 });
to fix this. It's not spaces - it's actually null characters that are converted weirdly. I had this issue too.
In powershell, you can do this:
$yourString.TrimEnd(0x00)