GetBytesdoes not have an overload that accepts sbyte, so your sbyteimplicitly converts to shortand you call GetBytes(short), which returns two bytes.
You should just translate sbyteto bytes unchecked.
sbyte s = 127;
byte[] byteArray = new[] { (byte)s };
source
share