Как превратить шестнадцатеричное в десятичное с помощью мозга?

Предполагая, что у вас есть объект Request, вы можете использовать:

string.Format("{0}://{1}{2}", Request.Url.Scheme, Request.Url.Authority, Url.Content("~"));

Если он недоступен, вы можете перейти к нему через контекст:

var request = HttpContext.Current.Request
21
задан Charles 4 August 2012 в 20:52
поделиться

7 ответов

Если учесть, что шестнадцатеричная система счисления является основанием 16, на самом деле это довольно просто:

Начните с наименее значащей цифры и двигайтесь к наиболее значащей (справа налево) и умножьте цифру с увеличением степени 16, затем суммируйте результат.

Например:

0x12 = 2 + (1 * 16) = 18

0x99 = 9 + (9 * 16) = 153

Тогда помните, что A = 10, B = 11, C = 12, D = 13, E = 14 и F = 15

Итак,

0xFB = 11 + (15 * 16) = 251

38
ответ дан 28 November 2019 в 22:22
поделиться

Десятичное значение будет

20h = 0x16^0 + 2x16^1 = 0x1 + 2x16 = 0 + 32 = 32

в десятичной записи или (32)10.

Для 40h в гекса у нас будет 64 в десятичном виде, для EOH у нас будет 224 в десятичном виде.

2
ответ дан jogojapan 4 August 2012 в 20:52
поделиться

Я не нашел ничего из этого полезного, поэтому вот мой способ: превратить его в два набора двоичных чисел для представления каждой буквы, затем взять все двоичное представление и преобразовать в десятичное число

Пример: AB

A / B

= 1010/1011 в двоичном формате

= 171 (128 + 0 + 32 + 0 + 8 + 0 + 2 + 1) в десятичном виде

0
ответ дан Crumblez 4 August 2012 в 20:52
поделиться

Я практически перестал это делать, когда обнаружил, что шестнадцатеричные числа, с которыми я работал, были 32-битными.

Для меньших чисел я (в конце концов) запомнил несколько шаблонов: 10 = 16, 20 = 32, 40 = 64, 80 = 128 (потому что 100 = 256, а 80 на один бит меньше). 200 = 512 Я помню из-за того, что я использовал какую-то машину с размером страницы 512 (уже не помню, на какой машине!). 1000 = 4096, потому что это размер страницы другого компьютера.

также, 64 = 100, 32 = 50, B8 = 200

Вот и все. Кроме того, добавляю.

9
ответ дан 28 November 2019 в 22:22
поделиться

That's not the formula.. that's not even somewhat like the formula...

The formula is:

X*16^y where X is the number you want to convert and y is the position for the number (from right to left).

So.. if you want to convert DA145 to decimal would be..

(5 * 16^0) + (4 * 16^1) + (1 * 16^2) + (10 * 16^3) + (13 * 16^4)

And you have to remember that the letter are:
A - 10
B - 11
C - 12
D - 13
E - 14
F - 15

17
ответ дан 28 November 2019 в 22:22
поделиться

Для справки: ваш мозг действительно использует функциональный метод поиска ответа. Вот функция, которую мой мозг использует, чтобы найти значение шестнадцатеричного числа:

  1. Разделите шестнадцатеричное число на отдельные цифры.
  2. Преобразуйте каждую цифру в ее десятичное значение (чтобы 0-9 оставались неизменными, A равно 10, B равно 11 и т. д.)
  3. Начиная с крайней правой цифры, умножьте каждое значение на 16 ^ X степень, где X - расстояние от крайней правой цифры (так, чтобы самая правая цифра была 16 ^ 0 или 1, следующая - 16 ^ 1 или 16, затем 16 ^ 2, 256 и т. Д.)
  4. Сложите все значения вместе.
7
ответ дан 28 November 2019 в 22:22
поделиться

Запомните десятичные значения 20h, 40h и т. Д. До E0h. (Я полагаю, вы уже знаете 100 ч.) Затем получите десятичные значения, если другие числа, добавив или вычтя число от 1 до 16.

3
ответ дан 28 November 2019 в 22:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: