Разбить строку по на 4 части по 8 символов

1. voodoochild 12.12.19 19:48 Сейчас в теме
Добрый день!

Подскажите, каким образом можно разбить строку вида 11000000101010000000000000000001 на 4 части (по 8 символов), чтобы получить

a = 11000000
b = 10101000
c = 00000000
d = 00000001

Затрял, т.к. не за что зацепиться, нет ни "." ни "," ни "/" итд

Спасибо.
По теме из базы знаний
Найденные решения
3. spacecraft 12.12.19 21:28 Сейчас в теме
(1) как более универсальный вариант:
ИсходнаяСтрока = "11000000101010000000000000000001";
РезультатМассив = Новый Массив;
Для к = 0 По 3 Цикл
	РезультатМассив.Добавить(Сред(ИсходнаяСтрока, к*8+1, 8));
КонецЦикла;
acanta; voodoochild; +2 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. spacecraft 12.12.19 21:28 Сейчас в теме
(1) как более универсальный вариант:
ИсходнаяСтрока = "11000000101010000000000000000001";
РезультатМассив = Новый Массив;
Для к = 0 По 3 Цикл
	РезультатМассив.Добавить(Сред(ИсходнаяСтрока, к*8+1, 8));
КонецЦикла;
acanta; voodoochild; +2 Ответить
4. voodoochild 13.12.19 16:15 Сейчас в теме
(3) (2) Ребята, большое спасибо! Сделал!

Если возможно, подскажите пожалуйста, как победить:

все та же строка ИсходнаяСтрока = "11000000101010000000000000000001";
переменная Z = 8

отсчитываем от начала строки Z (в нашем примере 8) символов в строке, и с 9 по 32 заменяем все символы на "0"

Насколько я понял тут также необходим цикл с 1 По 32 и СтрЗаменить. Но не получается отсчитать 8 символов и соединить со СтрЗаменить..
5. Sashares 35 13.12.19 16:23 Сейчас в теме
(4) А что, нельзя получить первые 8 символов и присоединить строку из 24 нулей?
7. voodoochild 13.12.19 16:32 Сейчас в теме
(5)
можно, но Z будет меняться от 8 до 30 (префиксы маски подсети), и тогда нужно как-то вычислять сколько останется добавить нулей и указать с какого места С этим мне пока трудно будет разобраться
10. Sashares 35 13.12.19 16:42 Сейчас в теме
(7) Как то так
ИсходнаяСтрока = "11000000101010000000000000000001"; 

СтрокаНулей = "00000000000000000000000000000000";//их 32

Z = 8;

КонечнаяСтрока = Лев(ИсходнаяСтрока, Z) + Лев(СтрокаНулей, СтрДлина(ИсходнаяСтрока)-Z);
voodoochild; +1 Ответить
11. voodoochild 15.12.19 00:16 Сейчас в теме
(10)
ИсходнаяСтрока = "11000000101010000000000000000001";

СтрокаНулей = "00000000000000000000000000000000";//их 32

Z = 8;

КонечнаяСтрока = Лев(ИсходнаяСтрока, Z) + Лев(СтрокаНулей, СтрДлина(ИсходнаяСтрока)-Z);


Спасибо!
А если в самом конце итоговой строки мне нужно будет вставить символ "Е", правильно ли я модифицировал код? Работает, но не уверен что правильно сделал

ИсходнаяСтрока = "11000000101010000000000000000001"; 

СтрокаНулей = "00000000000000000000000000000000";//их 32

Z = 8;

СимволВКонце = "Е";

КонечнаяСтрока = Лев(ИсходнаяСтрока, Z) + Лев(СтрокаНулей, СтрДлина(ИсходнаяСтрока)-Z-1) + Прав(СимволВКонце, 1);
Показать


(10)
13. voodoochild 15.12.19 09:06 Сейчас в теме
(11)
вернее не вставить, а заменить
14. Sashares 35 15.12.19 09:20 Сейчас в теме
(13)Не совсем правильно.

...
СимволВКонце = "Е";

КонечнаяСтрока = Лев(ИсходнаяСтрока, Z) + Лев(СтрокаНулей, СтрДлина(ИсходнаяСтрока)-Z-1) + СимволВКонце;

6. Xershi 1519 13.12.19 16:26 Сейчас в теме
(4) а смысл тогда вообще это делать, забей сразу нули.
8. voodoochild 13.12.19 16:33 Сейчас в теме
(6)
в Z буду передавать значения от 8 до 30
9. Xershi 1519 13.12.19 16:36 Сейчас в теме
(8) озвучили бы задачу корректно. А то какая то ахелесица!
12. voodoochild 15.12.19 00:43 Сейчас в теме
(9)

Прошу прощения, не стал описывать всю задачу, думал спросить точечно

Создаю обработку генерации конфиг файлов для сетевого оборудования, с последующим заливом . Естественно, необходимо производить расчет сети, и пришлось сооружать мини subnet калькулятор. Адреса из формата dec перевожу в bin, выполняю операции, а затем снова перевожу в dec.
Мой первый вопрос был как раз связан с обратным переводом в dec (где разбивал на 4 части), а второй с расчетом host min и host max
Для наглядности прикладываю скрин
Прикрепленные файлы:
15. Xershi 1519 15.12.19 10:48 Сейчас в теме
(12)разбил строку на массив
Перевёл в двоичные, вопрос только зачем.
Далее нужно указать маску.
24 это 255.255.255.0?
Потом точно так же.
2. Xershi 1519 12.12.19 19:53 Сейчас в теме
Лев 8
Сред 9 8
Сред 17 8
Прав 8
Если строка всегда 32 символа.
kasper076; acanta; voodoochild; PhoenixAOD; Aleksandr_prof; YPermitin; +6 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот