Есть, к примеру,
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');
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
У меня простая windows formДве кнопки: одна шифрует файл любым способом, сохраняет файл и в конце расширения дописывает
Имею вот такую вот простенькую реализацию игры Mined Out:
Почему не сохраняет в базу данных (SQL Server) данные из dataGridView? Код без ошибок