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