Вы на самом деле вызываете перегрузку Convert.ToString, определенную как:
Convert.ToString(short value, int base)
Байт со знаком использует первый бит в качестве знака - вы сначала неявно преобразуете его в короткое, которое из-за способадвоичный файл хранится с добавлением единиц для поддержания негатива.(т. е. 10000000 в виде sbyte - это -128 в двоичном формате).