декодировать base64 в двоичные данные? #695474


#0 by 0level
как декодировать base64 в двоичные данные? Base64Значение(Объект.Реквизит1)   выдает шестнадцатиричные данные
#1 by МихаилМ
не верите документации Возвращаемое значение: Тип: ДвоичныеДанные.
#2 by 0level
))) значение с буквами, двоичные такими не бывают
#3 by МихаилМ
путаете данные и их представление
#4 by БледноЗолотистый
1 и 0 нужны? Нафига?
#5 by SUA
почему?
#6 by acsent
ТипЗнч(Base64Значение(Объект.Реквизит1) ) ???
#7 by 0level
так как потом их нужно часть в 10-чные числа, а часть в строку. вот подскажите как? )))
#8 by Maxus43
ты помоему плохо понимаешь что есть двоичная, 10-чная и 16-ричная системы исчисления
#9 by Maxus43
и собственно что такое двоичные данные
#10 by Infsams654
ты не поверишь, все что ты сейчас видишь перед собой, это набор из 1 и 0
#11 by 0level
A400F0AD5307EA32313200000000003C2B54C1FA8C4C0C400000000C8D0C4D0000000000000000000000000000002ADB42104C0C8B8C000010000000000181FF70DA4C6A6041D9C60000000000000000000000000000000186A029870D4018000000
#12 by БледноЗолотистый
И тебе легче будет видеть 1010010000000000111100001010110101010011000001111110101000110010 ???
#13 by Maxus43
и что?
#14 by 0level
да так как передо мной инструкция в которой указано количество двоичных символов для расшифровки. например 1 номер 50 символов перевести в десятичное число. 2 название 56 символов перевести в строку
#15 by acsent
спец олимпиада что ли?
#16 by H A D G E H O G s
Продолжайте. Я заинтригован.
#17 by 0level
ага со смартфона пишу ))))
#18 by 0level
и как же преобразовать в 1 и ноли?
#19 by БледноЗолотистый
кури
#20 by МихаилМ
не можете сопоставить 16 символам их двоичное представление  ?
#21 by zladenuw
зачем так сложно.
#22 by 0level
встроенные функции какие в 1с есть для работы с двоичными данными. нужно отсчитывать биты. допустим первые 10 преобразовать в число, потом 20 в строку.
#23 by H A D G E H O G s
10 бит в число очень трудно преобразовывается.
#24 by МихаилМ
преобразование в различные системы счисления - школьная задача. Вам на форум школьников.
#25 by Serginio1
Почему? Во многих случаях для экономии используют некое количество битов. Например для архивирования.
#26 by H A D G E H O G s
Для архивирование используют шаблоны и ссылки. Ну или RLE.
#27 by Serginio1
#28 by Serginio1
#29 by sda553
И это прекрасно. А вопрос в чем?
#30 by H A D G E H O G s
И все это - RLE + (либо) замена ссылками на позицию в словаре.
#31 by sda553
Двоичные данные можно только записать в файл в 1с. А вот чтобы прочитать определенные байты с определенным смещениемю опытные 1сники (по крайней мере я) наборот преобразовывают это в Base64  и работают как со строкой, делая с этими данными все, что ты хочешь.
#32 by 0level
тоесть base64 надо разбить на куски, декодировать куски? так?
#33 by sda553
да, каждый символ в base64 это 6 бит. Вот и режь эти символы как хошь
#34 by 0level
а если куски не дробны 6 битам?
#35 by Lama12
Даже интересно. Вроде не пятница. Автор ты студент или школьник?
#36 by H A D G E H O G s
Отрежь мне 10 бит, пожалуйста.
#37 by Serginio1
Бери HexBinary из там 2 символа это 1 байт. Легко достигает через битовое AND и маски с первыми 11 единицами остальные 0 можно использовать Word (2 байта). Остальные получаем смещение влево на 11 битов
#38 by Serginio1
Тогда ты должен знать как хранятся данные в скользящем окне
#39 by sda553
то дополняй их. Например тебе надо прочитать с 40-й позиции 5 байт 40*8/6=53 символа (2бита в остатке), нам нужен первый 53-й символ (нумеруем символы с нуля) 45*8/6=60 символов т.е. нам нужно прочитать с 53 по 59-ый символ, преобразовать их в двоичную строку и отрезать два младших бита
#40 by Адимр
А есть такой тип переменной "Bit" не в 1с, а в других ЯП, jave итп?
#41 by 0level
и как же мне отрезать "два младших бита"
#42 by sda553
bool не подходит?
#43 by etc
ниче не понял. ... 1 номер 50 символов перевести в десятичное число. 2 название 56 символов перевести в строку ... 50 каких символов? однобайтовых? двухбайтовых? в двоично-десятичном виде?
#44 by 0level
есть строка в base64, ее нужно декодировать в "единицы и ноли" (двоичный код). Потом по схеме отсчитывать биты и переводить в десятеричную систему числа, и слова. Например(из головы) с 1 - 15 бит закодировано число (ОГРН), с 16-50 бит  название компании.
#45 by 0level
я в 1с получил функцией base64 вот такую строку A400F0AD5307EA32313200000000003C2B54C1FA8C4C0C400000000C8D0C4D0000000000000000000000000000002ADB42104C0C8B8C000010000000000181FF70DA4C6A6041D9C60000000000000000000000000000000186A029870D4018000000 что дальше, пока не совсем ясно. спасибо что помогаете, народ!!
#46 by sda553
Извиняйте, ощущение, будто я ученикам третьего класса пытаюсь теорему пифагора объяснить. - а что такое прямой угол? - а что такой "квадрат"?
#47 by sda553
это не Base64. Base64 выглядит как то так fScv5g6Zxtt7g3SEC5
#48 by zulu_mix
ггг... тс решил что двоичные данные это 10010110 и решил по быстрому в 2 строки навалять конвертер из 16-ричного кода в двоичный
#49 by 0level
тяжко. одни говорят что у функции Base64Значение(<Строка>) Параметры: Тип: Строка. Строка, закодированная по алгоритму base64. Возвращаемое значение: Тип: ДвоичныеДанные!!!!!!!!!!!!!!!!!!! вы говорите что это 16-ричный. то что я написал выше результат Этот функции Base64Значение(<Строка>). так что она выдает 16-ричн код или двоичный? Я правильно понял что надо писать функцию конвертер из 16 в двоичный и такой функции нет в 1с? Кого раздражают мои глупые вопросы, можете не отвечать? никого же не заставляем. Всем остальным спасибо за терпение ))))
#50 by zulu_mix
открой блокнотом файл экселя. что ты увидишь? набор невнятных символов. это и есть двоичные данные. а уж в каком виде они будут тебе представлены - дело просмотрщика. он тебе и в двоичном и в шестнадцатеричном, и в ассемблере показать может.
#51 by 0level
как увидеть эту строку в двоичном в 1с
#52 by zulu_mix
написать свою функцию преобразования в двоичный код. алгоритмы кажется уже кидали
#53 by Гобсек
В этой статье листинг процедуры, которая преобразовывает строку в кодировке Bes64 в массив байтов и обратно. Только что написал :-)
#54 by Гобсек
Bes64 -> Base64
#55 by Serginio1
Ты 25 читал? Ты из Двичных данных можешь получить шестнадцатиричное представление  и работай с ним ТипhexBinary    = ФабрикаXDTO.Тип(";;, "hexBinary"); Я уже не говорю о том, что с двичными данными проще работать на других языках.
#56 by 0level
сообщает вот эту строку A400F0AD5307EA32313200000000003C2B54C1FA8C4C0C400000000C8D0C4D0000000000000000000000000000002ADB42104C0C8B8C000010000000000181FF70DA4C6A6041D9C60000000000000000000000000000000186A029870D4018000000 Как мне отсчитать первые 50 бит перевести их в десятичные, потом следующие 56 бит перевести в 7 символов?
#57 by Гобсек
В статье по ссылке из готовая рабочая процедура чуть более 100 строк.
#58 by 0level
спасибо. знаний маловато ее поправить, конфигуратор выдает ошибки
#59 by Гобсек
Какая версия платформы? У меня 8.2.19.80 Какие ошибки?
#60 by 0level
{Форма.Форма.Форма(278,4)}: Ожидается ключевое слово 'КонецЦикла' ('EndDo')    <<?>>КонецЕсли; (Проверка: Сервер) {Форма.Форма.Форма(282,15)}: Ожидается ключевое слово 'Тогда' ('Then')    Если Индекс<<?>>     Массив64[Индекс] = Ост; (Проверка: Сервер) {Форма.Форма.Форма(283,4)}: Ожидается ключевое слово 'КонецФункции' ('EndFunction')    <<?>>КонецЕсли; (Проверка: Сервер) {Форма.Форма.Форма(286,32)}: Обнаружено логическое завершение исходного текста модуля    Массив64[(А-1)*3 + 0] = Ост;<<?>> (Проверка: Сервер) {Форма.Форма.Форма(277,15)}: Ожидается ключевое слово 'Тогда' ('Then')    Если Индекс<<?>>     Массив64[Индекс] = Ост; (Проверка: Тонкий клиент) {Форма.Форма.Форма(278,4)}: Ожидается ключевое слово 'КонецЦикла' ('EndDo')    <<?>>КонецЕсли; (Проверка: Тонкий клиент) {Форма.Форма.Форма(282,15)}: Ожидается ключевое слово 'Тогда' ('Then')    Если Индекс<<?>>     Массив64[Индекс] = Ост; (Проверка: Тонкий клиент) {Форма.Форма.Форма(283,4)}: Ожидается ключевое слово 'КонецФункции' ('EndFunction')    <<?>>КонецЕсли; (Проверка: Тонкий клиент) {Форма.Форма.Форма(286,32)}: Обнаружено логическое завершение исходного текста модуля
#61 by Гобсек
Видимо, копирование-вставка прошли некорректно. Попробуй скопировать отсюда:
#62 by 0level
Спасибо Огромное. выводится сообщение, длина строки должна быть кратна 4. что это за проверка и для чего?
#63 by Гобсек
Длина строки в кодировке Base64 должна быть кратна четырем. Это происходит потому, что каждая тройка байтов по 8 битов преобразуется в четверку групп по 6 битов. Если байтов не 3, а 2 или 1, то на конце добавляются знаки "=". И все равно получается четверка. В моей процедуре есть две строчки, которые удаляют переносы строки.         Строка64 = СтрЗаменить(Строка64, Символ, ""); Эти переносы 1С добавляет, для того, чтобы строку было удобнее рассмотреть в отладчике. После удаления этих символов длина строки должна быть кратна 4.
#64 by H A D G E H O G s
"Эти переносы 1С добавляет, для того, чтобы строку было удобнее рассмотреть в отладчике." Пффф. Святая простота.
#65 by 0level
еще раз для тупого, строка64 - это строка в base64 или а=Base64Значение(<Строка>) ? по второму массив возвращает десятичные числа. а нужно бинарный код
#66 by H A D G E H O G s
Забей.
#67 by H A D G E H O G s
Ты просто психологически не готов. У меня такое было в 8 классе на геометрии.
#68 by Infsams654
чего?. Щелкни по файлу jpg, откроется картинка, "а нужно бинарный код"
#69 by 0level
есть base64   pHBIhg+RgDEyMzQ1NjccEiGD5GAMTAxAAAAADI0MTQAAAAAAAAAAAAAAAAAAACrbQpBMDMuMwAAQAAAAAAHB/3DaTGRqYEHZxgAAAAAAAAAAAAAAAAAAAC7gKYcNgBgAAAA== из него получаю функцией Base64Значение(<Строка>) A47048860F9180313233343536371C122183E4600C4C0C400000000C8D0C4D0000000000000000000000000000002ADB42904C0CCB8CC000100000000001C1FF70DA4C646A6041D9C60000000000000000000000000000002EE029870D8018000000 А нужно для начала )))))))))))))) получить вот эту бинарную строку 10100100011100000100100010000110000011111001000110000000001100010011001000110011001101000011010100110110001101110001110000010010001000011000001111100100011000000000110001001100000011000100000000000000000000000000000000001100100011010000110001001101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010101101101101000010100100000100110000001100110010111000110011000000000000000001000000000000000000000000000000000000000000011100000111111111011100001101101001001100011001000110101001100000010000011101100111000110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001011101110000000101001100001110000110110000000000110000000000000000000000000000000 Вопрос, как? возвращает массив с десятичными числами
#70 by 0level
потом разбить ее на куски, и одни куски перевести в числа, другие в символы )
#71 by Serginio1
Тяжело в 1С с побитовыми операциями. Но все в твоих руках. Например в Net есть класс BitArray.
#72 by Гобсек
Обрабатывай массив из десятичных чисел, указанный в . Например, можно каждое число перевести в двоичную систему в виде строки и строки склеить.
#73 by Infsams654
так разбивай, в чем проблемы ?
#74 by sda553
Это можно легко сделать еще на этапе строки Base64. Каждый символ это 6 битовый кусок.
#75 by Infsams654
A470 ... = 1010010001110000... что не так ?
#76 by Гобсек
Кстати да. Только придется вбивать таблицу перекодировки. А таблица перекодировки есть по ссылке
#77 by 0level
все так тока я это в онлайн декодерах сделал а надо в 1с
#78 by Гобсек
см
#79 by Гобсек
В статье из википедии по ссылке такая картинка, что посмотришь на нее и сразу все поймешь.
#80 by Infsams654
зачем до того? Base64Значение уже отдает двоичные данные
#81 by sda553
см первое предложение.
#82 by Infsams654
дак запиши и прочитай в строку - и не надо изголяться с Base64. В строке все уже будет побайтно в 2-чном коде. При чем, самое, интересное то, что задача ужа сама по себе проще решается - там сразу видно, число это или буква
#83 by mrDSide
рукалицо
#84 by mrDSide
про системы счисления не слышали?
#85 by sda553
Дай код, как двоичные данные в строку превратить
#86 by H A D G E H O G s
Я бы на твоем месте задумался - зачем жертве ЕГЭ вообще двоичные данные в виде строки.
#87 by Infsams654
ЧтениеТекста. Прочитать в строку, КодСимвола каждого прочитанного символа строки - есть двоичные данные этого символа
#88 by H A D G E H O G s
До ближайшего нулевого байта.
#89 by Infsams654
#90 by 0level
По себе людей не судят )
#91 by 0level
Кузьменко Василий    Функция преобразования(Н) КонецФункции      вот наваял чуток
#92 by H A D G E H O G s
Молоток!
#93 by oleg_km
Какие объемы планируешь перемалывать? Если честно, до сих пор не могу понять: что ТС нужно?
#94 by etc
а ты вчитайся в мой вопрос ему и поймешь что у него никакой конкретики в задаче нет. Он даже не знает сколько бит на 1 знак отведено в его двоичных данных.
#95 by etc
> по второму массив возвращает десятичные числа. а нужно бинарный код убил.+
#96 by 0level
всем спасибо, кажется все сделано.
#97 by Infsams654
это что было ?
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С