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