Число в 4 байта #487395


#0 by bestuzhev
Есть Число, например 19553 его как-то надо записать в 4 байта. Например 19553 в 2ичной системе 0000000000000000100110001100001 потом это добро поделить на байты 0000000 00000000 01001100 01100001 и каждый байт записать в строку в виде символа в итоге у этого числа получится следующая строка "  La", то есть первые 2 байта нули в третьем 01001100 что соответствует L а в 4м 01100001 что соответствует a. Как такой перевод реализовать в 1с 8.1?
#1 by Defender aka LINN
Ну, так и реализовывай, какие проблемы?
#2 by Fram
главное - весь алгоритм знает, а что делать с алгоритмом не знает ))
#3 by YoungMan
а смысл изначально в чем?
#4 by shuhard
[Как такой перевод реализовать в 1с 8.1] Скрипт=СоздатьОбъект("MSScriptControl.ScriptControl");    Математика=Скрипт.Eval("Math");    Ат=Математика.pow(2,Цел(Лог(а)/Лог))+1; - и фигарь свои двоичные сдвиги  и XOR
#5 by bestuzhev
Какими функциями переводить из одного вида в другой. Формат выгрузки цен (цены в копейках).
#6 by YoungMan
а где у тебя должно быть 4 байта? в какой системе?
#7 by bestuzhev
Есть число например что приводил я 19553, оно занимает 2 байта, 2 байта это 2 символа из ascii, каждый байт свой символ. А формат файла в который все это нужно записать (и из которого все это будет загружаться предполагает что число должно писаться в 4 байта) то есть в файл пишем два символа из ascii с 00000000, а потом два символа которые соответствуют числу 19553.
#8 by dk
8-ка в уникоде, а не в асци
#9 by bestuzhev
И.
#10 by dk
там символы по 2 байта
#11 by dk
или в чем поблема?
#12 by bestuzhev
Внимательно прочитай и
#13 by Said_We
Так много цен передаёшь что не влазиют в файл и надо уменьшить разрядность клонки? Или куда передаёшь - там число, а не строка символов?
#14 by bestuzhev
У файла есть специальный формат, в котором цена должна занимать 4 байта, то есть при загрузке считывается 4 байта и получается число.
#15 by Said_We
Ну или функцию внешнюю для перевода используй? Или сам 19553/16 и переводишь в 16-ую систему.
#16 by dk
т.е. не получается записать символ с кодом 0?
#17 by bestuzhev
Если кто еще не понял суть проблемы, то откройте калькулятор в винде, переведите его в инженерный режим, выберите Bin и 4 байта и введите 11111111111000000000000000000000 потом нажмите Dec получится 4292870144 потом Hex и получите FFE00000 вот эти 4 байта и надо записать в текстовый файл, побайтно.
#18 by bestuzhev
и это тоже
#19 by bestuzhev
Вернее не в текстовый файл а просто в файл.
#20 by Said_We
"  La" - это текстовый файл. А тебе как раз нужно просто 16-е число.
#21 by YoungMan
А в чем проблема как таковая? Если у тебя произвольный формат файла получается??? Ты же сам его формируешь, так еще и сам его загружать после этого будешь...
#22 by Said_We
Когда ты это 16-е число запихнешь в файл, то и получиль строку "  La" при просмотре в текстовом редакторе или ХХХХh в HEX редакторе.
#23 by bestuzhev
Открой любой файл Блокнотом и увидишь текст.
#24 by bestuzhev
Можно подробнее.
#25 by Rie
Так а проблема-то в чём? 4 байта в файл записать?
#26 by YoungMan
только при этом максимальное значение будет 65535
#27 by bestuzhev
Ага типа того.
#28 by YoungMan
Вообще же конечно максимальное значение которое дает 16-я система при 4-байтном коде: FFFFFFFF, т.е. 4`294`967`295
#29 by Rie
Байты в каком порядке должны идти?
#30 by bestuzhev
Вот. Так мне и надо представить число в 4-байтном коде и записать эти 4 байта в файл.
#31 by YoungMan
только я еще раз прошу ответить на
#32 by bestuzhev
Нет не произвольный.
#33 by Ковычки
Фигня какая то
#34 by bestuzhev
Был бы мой формат я бы не лучился...
#35 by YoungMan
но если ты сам определяешь в каком виде будет формироваться файл (ты же в вообще некую шифровку предлагал), то как опять же без переработки будет этот файл обрабатываться на приемнике?
#36 by Rie
Ты чем его пишешь-то? И в каком порядке у тебя байты числа должны идти?
#37 by Ковычки
пипец задача яйца выеденого не стоит
#38 by bestuzhev
Читать
#39 by bestuzhev
Конкретно Таблица товаров бинарный вид Goods.bin
#40 by Ковычки
задача яйца выеденого не стоит
#41 by bestuzhev
Ну так реши ее.
#42 by Fram
ну не умеет 1С с бинарниками работать.. пользуйся сторонними объекатми.. на vbscript попробуй
#43 by shuhard
в предложено ТС кроме флюда некуя не умееет
#44 by Rie
В этом файле сказано, что имеется программка GoodsConverter, которая способна превратить goods.txt в goods.bin Если не умеешь писать двоичные файлы - то что мешает воспользоваться этим несомненно полезным инструментом?
#45 by bestuzhev
Да не хотелось чем-то еще пользоваться, придется в в текстовом грузить. Просто текстовый грузится раз в 40 медленнее.
#46 by НетуаНадо
ну а деление на два слабо в цикле использовать просто??
#47 by НетуаНадо
и проверять на цело делиться или нет
#49 by Rie
Не надо на 2. Надо на 256. Или даже на 65536
#50 by Ковычки
+
#51 by НетуаНадо
тебе поможет
#52 by bestuzhev
ну а как из 11111111 или FF получить символ и записать его в файл?
#53 by Rie
А зачем тебе двоичный или шестнадцатеричный _вид_, если у тебя есть _байты_?
#54 by bestuzhev
В смысле байты. У меня есть число.
#55 by Rie
Есть число (например, оно называется Цена). Это число состоит из 4 байтов: (Цена%256), (Цел(Цена/256)%256), (Цел(Цена/65536)%256), (Цел(Цена/16777216)). (Или в каком порядке тебе они нужны?)
#56 by Rie
И зачем тебе _грузить_ текстовый файл, если у тебя есть программка-_конвертер_, которая создаст .bin?
#57 by Ковычки
Ты паразитируешь что ли ? только скорее всего в обратном порядке и не стоит джабу использовать (будут проблемы)
#58 by Ковычки
#59 by bestuzhev
Ковычки +100 Спасибо.
#60 by Ковычки
порядок байт скорее обратный приведенному
#61 by Said_We
Порядок байт - сначала младшие разряды, потом старшие.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

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