Как уже было сказано, вам нужен не метод DateTime, а метод строки.
дидактически, я бы сделал это:
string dt = DateTime.Now.ToString("MM-dd-yyyy");
Console.WriteLine($"current date is {dt}".ToUpperInvariant());
Если вы хотите знать, почему toUpperInvariant (), а не toUpper ():
это потому, что мы не будем рассматривать культуру окалы ( В C # в чем разница между ToUpper () и ToUpperInvariant ()? )
Если я правильно понимаю ваш вопрос (вероятно, нет), вы хотите знать, как найти физический адрес из виртуального адреса с помощью таблицы страниц. структур. В этом случае представьте, что вы процессор. Используйте 10 старших разрядов адреса, чтобы найти таблицу страниц в каталоге страниц (таблица страниц верхнего уровня). Следующие 10 бит - это индекс в таблице страниц (таблица страниц нижнего уровня). Используйте адрес в этой записи таблицы страниц, чтобы найти физический адрес страницы. Последние десять бит - это байтовый адрес страницы.
Кстати, вы, вероятно, найдете намного больше людей, которые поймут этот тип вопросов на сайте, ориентированном на ОС, таком как OSDev . Я не мог вдаваться в подробности в этом ответе, потому что я не делал таких вещей уже много лет.
Чтобы определить страницу данного адреса памяти, возьмите число первых битов P (из N битов).
P = lg2 (numberOfPages)
В вашем примере P = lg2 (16) = 4
Таким образом, первые 4 бита данного адреса памяти сообщают нам страницу. Это означает, что остаток должен быть смещением от начала этой страницы.
Ваш примерный адрес, 51996, равен 1100101100011100 в двоичном формате. То есть [1100: 101100011100].
1100 (12 в десятичном формате) - это номер страницы
101100011100 (2844 в десятичной системе) - это смещение
Теперь нам нужно найти в памяти место страницы 12.
Глядя на вашу таблицу фреймов, кажется, что страница 12 находится в 6-м фрейме. В системе, где вся память является страничной (т. Е. Без отображения ввода-вывода в память), 6-й страничный фрейм будет иметь адрес (entryPerPage * frameNum) -1
В этом случае 4000 * 6-1 = 23999 («- 1 "необходим, поскольку память проиндексирована 0.)
В этом случае 4096 * 6-1 = 24575 (" -1 "необходим, поскольку память индексируется 0.)
Теперь все, что нам нужно сделать, это добавить смещение, и у нас есть адрес физической памяти:
23999 + 2844 = 26843 = 0x68DB
24575 + 2844 = 27419 = 0x6B1B
Готово!
Надеюсь, это (править) было полезно XD
Редактировать: Спасибо Джел за то, что поймал мою ошибку :) Спасибо user8 за то, что поймал мою вторую ошибку! (frameNum вместо pageNum).