Compare commits
3 Commits
master
...
dev/v1.0.4
| Author | SHA1 | Date | |
|---|---|---|---|
| 03710b6fea | |||
| a9bc5c9aa7 | |||
| e832f60a32 |
@@ -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"])
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)
|
||||||
}
|
}
|
||||||
@@ -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
|
||||||
5
src/test/kotlin/InsertBinTest.kt
Normal file
5
src/test/kotlin/InsertBinTest.kt
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
import ru.thiflict.binaryutils.BinConvert.insertBit
|
||||||
|
|
||||||
|
fun main() {
|
||||||
|
println(4.toShort().insertBit(6, 1))
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user