Reputation: 1469
I have a byte array that may or may not have null bytes at the end of it. After converting it to a string I have a bunch of blank space at the end. I tried using Trim() to get rid of it, but it doesn't work. How can I remove all the blank space at the end of the string after converting the byte array?
I am writing this is C#.
Upvotes: 4
Views: 14877
Reputation: 2978
Trim() does not work in your case, because it only removes spaces, tabs and newlines AFAIK. It does not remove the '\0' character. You could also use something like this:
byte[] bts = ...;
string result = Encoding.ASCII.GetString(bts).TrimEnd('\0');
Upvotes: 7
Reputation: 185663
public string TrimNulls(byte[] data)
{
int rOffset = data.Length - 1;
for(int i = data.Length - 1; i >= 0; i--)
{
rOffset = i;
if(data[i] != (byte)0) break;
}
return System.Text.Encoding.ASCII.GetString(data, 0, rOffset + 1);
}
In the interest of full disclosure, I'd like to be very clear that this will only work reliably for ASCII. For any multi-byte encoding this will crap the bed.
Upvotes: 2