PadLeft
применяет минимальную длину к строке, но вы хотите, чтобы ваша строка имела длину ровно 24 символов.
Таким образом, в дополнение к PadLeft
, вам также необходимо использовать Substring
для усечения вашей строки, когда она содержит более 24 символов:
string s = Convert.ToString(-3, 2);
// assuming the int is always representable by 24 bits two's complement
if (s.Length < 24) { // alternatively, check integer is positive
s = s.PadLeft(24, '0');
} else if (s.Length > 24) { // alternatively, check integer is negative
s = s.Substring(8);
}
Как сказал Ганс Пассант в комментариях, вы также можете использовать битовую маску для очистите наиболее значимые 8 бит числа, которое вы конвертируете Таким образом, вам не нужны операторы if.
Convert.ToString(-3 & 0xffffff, 2).PadLeft(24, '0');