Ако трябва да преобразувате число от десетично в осмично число (база 8), две функции идват на ум, ако използвате MySQL. Едната функция е специално за извършване на осмични преобразувания, другата е за извършване на преобразувания между различни бази. Те са както следва:
OCT()
- Тази функция се използва специално за преобразуване от десетичен в осмичен.
CONV()
- Тази функция има по-общо предназначение. Позволява ви да посочите основата на оригиналния номер и резултата. С други думи, можете да конвертирате от всяка база към всяка база (стига всяка база да е между 2 и 36).
Повече за тези две функции по-долу.
Функцията OCT()
Както споменахме, тази функция е специално за преобразуване от десетичен в осмичен. Синтаксисът му е така:
OCT(N)
Където N
е десетичното число, което искате да преобразувате в осмично число.
Ето един пример:
SELECT OCT(8);
Резултат:
+--------+ | OCT(8) | +--------+ | 10 | +--------+
Резултатът е 10
защото това е осмичният еквивалент на 8 в десетичната система.
Функцията CONV()
Това е функция с по-общо предназначение, която ви позволява да посочите не само системата за номериране, която да преобразувате в , но също и номерационната система за преобразуване от .
Синтаксис:
CONV(N,from_base,to_base)
Където N
е числото за преобразуване, from_base
е базата за конвертиране и to_base
е основата за преобразуване.
Така че можем да пренапишем предишния пример на това:
SELECT CONV(8, 10, 8);
Резултат:
+----------------+ | CONV(8, 10, 8) | +----------------+ | 10 | +----------------+
И получаваме същия резултат, защото преобразуваме числото от основа 10 в основа 8.
Едно предимство на CONV()
функцията е, че можете да конвертирате между други бази. Например бихме могли също толкова лесно да преобразуваме от, да речем, база 8 в база 16.
Какво е Octal?
Осмицата е система от числови записи, която има 8 като основа. Това е за разлика от десетичната запетая, която има 10 като основа.
При десетичен брой броим до 9, след което започваме отново, като добавяме нула след първата цифра (например след 9 идва 10, което е 1 с добавена нула към него).
В осмична (база 8) обаче броим само до 7, преди да започнем отново и да добавим нула. Така че 10 в осмични числа е еквивалент на 8 в десетичната запетая.
Ето таблица за демонстрация:
Десетична (основа 10) | Осмически (база 8) |
---|---|
1 | 1 |
2 | 2 |
3 | 3 |
4 | 4 |
5 | 5 |
6 | 6 |
7 | 7 |
8 | 10 |
9 | 11 |
10 | 12 |
11 | 13 |
12 | 14 |
13 | 15 |
14 | 16 |
15 | 17 |
16 | 20 |
17 | 21 |
18 | 22 |
19 | 23 |
20 | 24 |