Добавлена конвертация из десятичных чисел в двоичные.
This commit is contained in:
85
src/main/kotlin/BinConvert.kt
Normal file
85
src/main/kotlin/BinConvert.kt
Normal 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()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user