3 Commits

4 changed files with 50 additions and 3 deletions

View File

@@ -4,7 +4,7 @@ plugins {
} }
group = "ru.thiflict.binaryutils" group = "ru.thiflict.binaryutils"
version = "1.0.3" version = "1.0.4-dev2"
repositories { repositories {
mavenCentral() mavenCentral()
@@ -27,7 +27,7 @@ publishing {
create<MavenPublication>("maven") { create<MavenPublication>("maven") {
groupId = "ru.thiflict.binaryutils" groupId = "ru.thiflict.binaryutils"
artifactId = "binary-utils" artifactId = "binary-utils"
version = "1.0.3" version = "1.0.4-dev2"
from(components["java"]) from(components["java"])
} }

View File

@@ -82,4 +82,46 @@ object BinConvert {
.joinToString("") .joinToString("")
.toInt() .toInt()
} }
fun Long.toDecimalsActual(): Int =
this
.toString()
.filter { it == '0' || it == '1' } // Отфильтровываем только биты
.reversed() // Переворачиваем для удобства обработки
.mapIndexed { index, char ->
if (char == '1') 1 shl index else 0 // shl = сдвиг влево
}
.sum()
/**
*
*/
fun Short.insertBit(register: Int, value: Int): Short {
if (register < 0 || register > 15)
throw IllegalArgumentException("Регистр должен быть в диапазоне 0-15")
if (value !in 0..1)
throw IllegalArgumentException("Значение должно быть 0 или 1")
var binString = this.toBinaryPadded()
val chars = binString.toCharArray()
// Рассчитываем индекс в массиве с учетом отсчета справа налево
val stringIndex = chars.lastIndex - register
// Вставляем значение в нужный регистр
chars[stringIndex] = if (value == 1) '1' else '0'
binString = String(chars)
// Парсим бинарную строку обратно в число
return binString.toShort(2)
}
fun Short.toBinaryPadded(): String {
// Преобразуем в двоичную строку без знака и дополняем нулями до 16 бит
val unsignedInt = this.toInt() and 0xFFFF
return unsignedInt.toString(2).padStart(16, '0')
}
fun Short.toBinaryActual(): String = this.toString(2)
} }

View File

@@ -3,7 +3,7 @@ import org.junit.jupiter.api.Test
import ru.thiflict.binaryutils.BinConvert.toBinary import ru.thiflict.binaryutils.BinConvert.toBinary
class BinConvertTest { class ConvertToBinTest {
// ------------------- Long.toBinary() ------------------- // ------------------- Long.toBinary() -------------------
@Test @Test

View File

@@ -0,0 +1,5 @@
import ru.thiflict.binaryutils.BinConvert.insertBit
fun main() {
println(4.toShort().insertBit(6, 1))
}