conv(num, from_base, to_base)
Описание
Функция conv()
преобразует число из одной системы счисления в другую.
Параметры
num
: Column - число для преобразования (в виде строки)from_base
: Column - исходная система счисления (от 2 до 36)to_base
: Column - целевая система счисления (от 2 до 36)
Возвращаемое значение
Column - строка, содержащая число в целевой системе счисления
Пример использования
from pyspark.sql.functions import conv, lit
from pyspark.sql import SparkSession
# Создаем SparkSession
spark = SparkSession.builder.appName("conv_example").getOrCreate()
# Создаем DataFrame с числами и системами счисления
data = [
("1010", 2, 10), # 1010 (двоичное) -> 10 (десятичное)
("A", 16, 10), # A (шестнадцатеричное) -> 10 (десятичное)
("10", 10, 2), # 10 (десятичное) -> 1010 (двоичное)
("10", 10, 16), # 10 (десятичное) -> A (шестнадцатеричное)
("FF", 16, 2), # FF (шестнадцатеричное) -> 11111111 (двоичное)
("255", 10, 16) # 255 (десятичное) -> FF (шестнадцатеричное)
]
df = spark.createDataFrame(data, ["number", "from_base", "to_base"])
# Преобразуем числа между системами счисления
df = df.withColumn("converted", conv("number", "from_base", "to_base"))
df.show(truncate=False)
# Результат:
# +------+----------+--------+---------+
# |number|from_base |to_base |converted|
# +------+----------+--------+---------+
# |1010 |2 |10 |10 |
# |A |16 |10 |10 |
# |10 |10 |2 |1010 |
# |10 |10 |16 |A |
# |FF |16 |2 |11111111 |
# |255 |10 |16 |FF |
# +------+----------+--------+---------+
Примечания
- Возвращает NULL, если любой из аргументов NULL
- Поддерживает системы счисления от 2 до 36
- Для систем счисления > 10 используются буквы A-Z
- Регистр букв не имеет значения
- Полезно для:
- Преобразования между двоичной и десятичной системами
- Работы с шестнадцатеричными числами
- Конвертации между различными системами счисления
- Связанные функции:
bin()
- преобразование в двоичную системуhex()
- преобразование в шестнадцатеричную системуunhex()
- преобразование из шестнадцатеричной системы