Добавлена конвертация из десятичных чисел в двоичные.

This commit is contained in:
2026-06-23 08:33:47 +05:00
parent 61ae4f5013
commit b66fa51e85
2 changed files with 245 additions and 0 deletions

View File

@@ -0,0 +1,85 @@
package ru.thiflict.binaryutils
/**
* Объект выполняет конвертации чисел из одной системы счисления в другую.
*
* Репозиторий: https://git.ds1.thiflict.ru/Thiflict/BinaryUtils
*
* @author Thiflict
*
* @since[1.0.3]
*/
object BinConvert {
/**
* Преобразует значение типа [Long] в строку, представляющую его 64-битное двоичное представление.
*
* Биты выводятся от старшего (индекс 63) к младшему (индекс 0). Каждый бит представлен символом '0' или '1'.
*
* Результат всегда содержит ровно 64 символа, включая ведущие нули.
*
* @return строка длиной 64 символа, состоящая из нулей и единиц, соответствующая двоичному представлению числа.
*/
fun Long.toBinary(): String {
return (0..63)
.reversed()
.map { bit -> (this shr bit) and 1 }
.joinToString("")
}
/**
* Преобразует значение типа [Int] в целое число, десятичная запись которого
*
* совпадает с 32-битным двоичным представлением исходного числа (включая ведущие нули).
*
* Биты перебираются от старшего (индекс 31) к младшему (индекс 0).
*
* Полученная строка из символов '0' и '1' интерпретируется как десятичное число.
*
* @return целое число, десятичное представление которого повторяет 32-битную двоичную форму исходного значения.
*/
fun Int.toBinary(): String {
return (0..31)
.reversed()
.map { bit -> (this shr bit) and 1 }
.joinToString("")
}
/**
* Преобразует значение типа [Short] в целое число, десятичная запись которого
*
* совпадает с 16-битным двоичным представлением исходного числа (включая ведущие нули).
*
* Значение [Short] перед обработкой приводится к [Int]. Биты перебираются от старшего (индекс 15)
*
* к младшему (индекс 0). Полученная строка из '0' и '1' интерпретируется как десятичное число.
*
* @return целое число, десятичное представление которого повторяет 16-битную двоичную форму исходного значения.
*/
fun Short.toBinary(): Long {
return (0..15)
.reversed()
.map { bit -> (this.toInt() shr bit) and 1 }
.joinToString("")
.toLong()
}
/**
* Преобразует значение типа [Byte] в целое число, десятичная запись которого
*
* совпадает с 8-битным двоичным представлением исходного числа (включая ведущие нули).
*
* Значение [Byte] перед обработкой приводится к [Int]. Биты перебираются от старшего (индекс 7)
*
* к младшему (индекс 0). Полученная строка из '0' и '1' интерпретируется как десятичное число.
*
* @return целое число, десятичное представление которого повторяет 8-битную двоичную форму исходного значения.
*/
fun Byte.toBinary(): Int {
return (0..7)
.reversed()
.map { bit -> (this.toInt() shr bit) and 1 }
.joinToString("")
.toInt()
}
}