Есть, к примеру,
randomInt = 5054385757817110541;
byte[] buf = BitConverter.GetBytes(randomInt);
string binTmp = string.Empty;
foreach (byte b in buf)
binTmp += Convert.ToString(b, 2).PadLeft(8,'0');
Переменная randmonInt типа UInt64.
По идее, в binTmp должна быть строка следующего вида
100011000100100110010010001000101000100011110111000000000001101
Однако в этой переменной содержится следующее значение:
0000110110000000011110110100010000010001110010010010010001000110
Помогите разобраться, что я делаю не так?
Как уже в комментариях сказали, есть перегрузка с которой можно перевести Int64 сразу в двоичную.
UInt64 randomInt = 5054385757817110541;
string bit = Convert.ToString((long)randomInt, 2);
Что касается конкретно вашей проблемы, то тут ответ прост: Endian. Дело в том, что BitConverter конвертирует входной объект в соответствии с порядком байт процессора, а у x86 little endian. То есть при конвертации вы получаете по сути перевёрнутый массив, поэтому достаточно будет просто развернуть его.
UInt64 randomInt = 5054385757817110541;
byte[] buf = BitConverter.GetBytes(randomInt);
buf = buf.Reverse().ToArray();
string binTmp = string.Empty;
foreach (byte b in buf)
binTmp += Convert.ToString(b, 2).PadLeft(8, '0');
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости