![]() |
![]() |
![]() |
|
Работа с двоичными данными | ☑ | ||
---|---|---|---|---|
0
alexei366
19.06.12
✎
16:21
|
Есть двоичные данные, я знаю что текст. Подскажите как можно переводить из двоичных в текст, сейчас я сначала сохраняю двоичные данные, потом открываю как текс, делаю что надо, а потом удаляю файл.
|
|||
1
andrewks
19.06.12
✎
16:22
|
данные в ХЗ?
|
|||
2
H A D G E H O G s
19.06.12
✎
16:22
|
Так и делай дальше.
|
|||
3
Irbis
19.06.12
✎
16:23
|
Сейчас спрося что такое ХЗ.
|
|||
4
H A D G E H O G s
19.06.12
✎
16:24
|
Раньше я тоже комплексовал по такому поводу, но потом для себя пояснил, что жесткий диск - это такая же память, а с учетом 16-32 мегабайтного кэша - ничем и не хуже.
|
|||
5
Stim
19.06.12
✎
16:27
|
а еще можно открывать мп3 файлы как текст - и читать ноты и слова
|
|||
6
azernot
19.06.12
✎
16:30
|
(5) Ща дойдёт до чтения сценария из avi
|
|||
7
alexei366
19.06.12
✎
16:38
|
возвращаюсь, а тут по делу не написали. Есть другой вариант или идеи или нет?
|
|||
8
andrewks
19.06.12
✎
16:38
|
не, ну теоретически-то можно. только геморно
|
|||
9
Irbis
19.06.12
✎
16:39
|
(7) А ты думал на форум программистов попал?
|
|||
10
alexei366
19.06.12
✎
16:39
|
а ХЗ мне не надо,инфа там только для разбора и выставления статусов
|
|||
11
Fragster
гуру
19.06.12
✎
16:39
|
бэйз64 и свой декодер
|
|||
12
alexei366
19.06.12
✎
16:40
|
Вот с момента только геморно поподробней
|
|||
13
andrewks
19.06.12
✎
16:40
|
(12) -> (11)
|
|||
14
andrewks
19.06.12
✎
16:41
|
(10) так у тебя откуда ДД появляются?
|
|||
15
alexei366
19.06.12
✎
16:41
|
Свой декодер на уровне языка 1С, быстрее будет сохранять а потом читать
|
|||
16
Fragster
гуру
19.06.12
✎
16:41
|
(13) Глобальный контекст
Base64Строка (Base64String) Синтаксис: Base64Строка(<Значение>) Параметры: <Значение> (обязательный) Тип: ДвоичныеДанные. Двоичные данные, которые необходимо закодировать по алгоритму base64. Возвращаемое значение: Тип: Строка. Описание: Получает строку, закодированную по алгоритму base64. См. также: Глобальный контекст, метод Base64Значение |
|||
17
alexei366
19.06.12
✎
16:42
|
ДД это вложение письма
|
|||
18
andrewks
19.06.12
✎
16:42
|
(16) спасибо, но СП у меня есть
|
|||
19
Agent ООЗ
19.06.12
✎
16:42
|
кто бы мог подумать, но текст это и есть двоичные данные.
|
|||
20
alexei366
19.06.12
✎
16:43
|
такс при помощи функций с б64 ютф не получишь
|
|||
21
H A D G E H O G s
19.06.12
✎
16:54
|
(20) Естественно.
|
|||
22
Fragster
гуру
19.06.12
✎
16:55
|
(20) почему?
|
|||
23
H A D G E H O G s
19.06.12
✎
16:55
|
(20) Тебе еще писать encoder из base64Строки в байтовый массив, а потом его через Символ() переводить в текст.
|
|||
24
andrewks
19.06.12
✎
17:00
|
(23) можно готовое взять: http://www.manhunter.ru/webmaster/423_funkcii_base64_na_javascript.html
и обернуть в msscriptcontrol (это если на винде) |
|||
25
H A D G E H O G s
19.06.12
✎
17:02
|
(24) Плохой, негодный алгоритм.
|
|||
26
H A D G E H O G s
19.06.12
✎
17:02
|
b64encoded += - фууу.
|
|||
27
alexei366
19.06.12
✎
17:08
|
не перенести на 1С не сложно, вот я то думал мож какой стандартный метод в 1С есть
|
|||
28
H A D G E H O G s
19.06.12
✎
17:10
|
Вот рассово верный код на Дельфи, бес всяких инкрементов строк..
function _Base64Decode(CinLine: ansistring; var OutStream: TMemoryStream): boolean; const RESULT_ERROR = -2; var inLineIndex: Integer; c: ansiChar; x: SmallInt; c4: Word; StoredC4: array[0..3] of SmallInt; InLineLength: Integer; buf: Byte; begin OutStream := TMemoryStream.Create(); inLineIndex := 1; c4 := 0; InLineLength := Length(CinLine); OutStream.SetSize(Round(InLineLength*0.75)); while inLineIndex <= InLineLength do begin while (inLineIndex <= InLineLength) and (c4 < 4) do begin c := CinLine[inLineIndex]; case c of '+': x := 62; '/': x := 63; '0'..'9': x := Ord(c) - (Ord('0') - 52); '=': x := -1; 'A'..'Z': x := Ord(c) - Ord('A'); 'a'..'z': x := Ord(c) - (Ord('a') - 26); else x := RESULT_ERROR; end; // case if x <> RESULT_ERROR then begin StoredC4[c4] := x; Inc(c4); end; Inc(inLineIndex); end; if c4 = 4 then begin c4 := 0; buf := ((StoredC4[0] shl 2) or (StoredC4[1] shr 4)); OutStream.Write(buf, 1); if StoredC4[2] = -1 then Exit; buf := ((StoredC4[1] shl 4) or (StoredC4[2] shr 2)); OutStream.Write(buf, 1); if StoredC4[3] = -1 then Exit; buf := ((StoredC4[2] shl 6) or (StoredC4[3])); OutStream.Write(buf, 1); end; end; end; |
|||
29
andrewks
19.06.12
✎
17:11
|
(28) на дельфи любой дурак напишет
|
|||
30
H A D G E H O G s
19.06.12
✎
17:12
|
(29) :-)
|
|||
31
H A D G E H O G s
19.06.12
✎
17:14
|
(29) Ты умеешь?
|
|||
32
H A D G E H O G s
19.06.12
✎
17:14
|
(27) Бугага.
|
|||
33
alexei366
19.06.12
✎
17:30
|
Проблема вообще проблема одна, у текстового документа нету в конструкторе для подстановки типа двоичные данные только путь. А побитовых операций в 1с я не видел пока
|
|||
34
andrewks
19.06.12
✎
17:34
|
(31) чего? на дельфи писать?
|
|||
35
H A D G E H O G s
19.06.12
✎
17:35
|
(34) Ага.
|
|||
36
andrewks
19.06.12
✎
17:38
|
(35) теоретически - да. но в последний раз это было очень давно, лет так 5 назад. хотя, при необходимости, восстановиться недолго
|
|||
37
alexei366
19.06.12
✎
17:57
|
тута на форуме нашёл
topic.php?id=282702 |
|||
38
experimentator76
19.06.12
✎
18:07
|
(33) искренне соболезную
|
|||
39
experimentator76
19.06.12
✎
18:07
|
(36) если решишься то лучше на православном си - ну его нафиг дельфи
|
|||
40
andrewks
19.06.12
✎
18:12
|
(39) на си я тоже писал. на чём я только не писал...
бэйсик, паскаль, си, ассемблер, пролог, 1С. русский - со словарём :-) |
|||
41
experimentator76
19.06.12
✎
18:15
|
(40) из этого только пролог незнаком - так что ты не одинок :)
|
|||
42
alexei366
19.06.12
✎
18:38
|
Короче я решил. Ищем ком объект какой-нибудь и при помощи него делаем.Буду признателен если кто поможет
|
|||
43
H A D G E H O G s
19.06.12
✎
21:37
|
1) Скачиваем
http://zalil.ru/33473782 2) Regsvr32 на него 3) Юзаем код (если Двоичные - в utf8) Двоичное=Новый ДвоичныеДанные ("C:\test.txt"); Ком=Новый COMОбъект("Hadgehogs.Base64Converter"); Сообщить(Base64Строка(Двоичное)); Сообщить(Ком.Convert(Base64Строка(Двоичное),1)); 4) Или код (если Двоичные - в ANSI): Двоичное=Новый ДвоичныеДанные ("C:\test.txt"); Ком=Новый COMОбъект("Hadgehogs.Base64Converter"); Сообщить(Base64Строка(Двоичное)); Сообщить(Ком.Convert(Base64Строка(Двоичное),2)); |
|||
44
andrewks
19.06.12
✎
21:41
|
(43) если не жалко, кинь, плиз, исходники в личку
|
|||
45
H A D G E H O G s
19.06.12
✎
21:46
|
||||
46
andrewks
19.06.12
✎
21:51
|
(45) спасибо! :) всё собираюсь какую-нибудь ВК замутить, да никак руки не доходят. (мечтательно) вот как сдам алкопивные декларации, да переведу все з/п и бухии на 8-ки, так и начну
|
|||
47
alexei366
20.06.12
✎
09:59
|
Спасибо большое!!!
|
|||
48
smaharbA
20.06.12
✎
10:02
|
двоичные данные это массив и поток его легко преобразует
|
|||
49
Kyon8
20.06.12
✎
10:17
|
Откопал тут в УПП, а вы говорите, что сохранять на диск не православно...
Если ОбъектВерсионируется(Источник, ЧислоВерсийОбъекта) Тогда ИмяВременногоФайла = ПолучитьИмяВременногоФайла(); ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.ОткрытьФайл(ИмяВременногоФайла); ЗаписьXML.ЗаписатьОбъявлениеXML(); ЗаписатьXML(ЗаписьXML, Источник, НазначениеТипаXML.Явное); ЗаписьXML.Закрыть(); ДвоичныеДанные = Новый ДвоичныеДанные(ИмяВременногоФайла); ХранилищеДанных = Новый ХранилищеЗначения(ДвоичныеДанные, Новый СжатиеДанных(9)); УдалитьФайлы(ИмяВременногоФайла); ВерсионированиеОбъектовПривилегированный.ЗаписатьВерсиюОбъекта(Источник.Ссылка, ЧислоВерсийОбъекта, ХранилищеДанных); КонецЕсли; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |