Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
Maksim

Вопрос по xmlhttp... Array of Byte

17.06.2010, 14:23. Показов 2287. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ситуация следующая...
Есть такой код:
Code
1
2
3
4
var x_xmlhttp=new ActiveXObject('microsoft.xmlhttp');
x_xmlhttp.open('GET','http://myserver/logo.gif', false);
x_xmlhttp.send();
var xdata = xobjreq.responseBody;
Посредством объекта xmlhttp выполняю запрос к вебсерверу, и получаю запрошенную страницу... Когда запрашиваю текстовые и HTML файлы, использую xobjreq.responseText для чтения ответа сервера, и проблем не возникает...
Непонятности возникли, когда попробовал прочитать бинарный файл... Использую .responseBody объекта.
Происходят странные вещи:
Если делаю alert(xdata), выводится неизвестно что, какой-то набор жутких символов, японские иероглифы, немецкие кресты и еще непонятно что.
Если вывожу переменную методом document.write(xdata), пишется 'undefined'...
При дебаге процесса в InterDev можно проследить состояние переменных.
xdata, value=набор этих непонятных символов, type=Array of Byte...
Хотя typeof(xdata) возвращает 'String' со значением 'undefined'...
В то же время, в окне Watch можно видеть выпадающее дерево значений элементов массива. Количество и значения соответствуют реальности... Однако прочитать их не получается...
Как быть?
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.06.2010, 14:23
Ответы с готовыми решениями:

convert string of byte 2 byte array
Есть длиииный стринг '00 05 0F 7B' и тд и тп, нада все это дело запихать в байтный массив (чтобы соответственно bytMass(0)=&H00,...

unsafe byte array to struct array
Есть массив байт размером N. Есть структура, внутри которой enum поле размером в 1 байт. Как с помощью unsafe кода преобразовать...

Конвертирование HEX array в BYTE array
Собственно сабж. Накопипастил. И слепил это. Скажите а можно лаконичнее? //Художественный изгиб преобразования HEX в Byte...

4
 Аватар для palva
4278 / 2970 / 693
Регистрация: 08.06.2007
Сообщений: 9,930
Записей в блоге: 5
22.06.2010, 15:29
Данные вы получили, но вы не написали, что вы хотите сделать с этими данными. Например, их можно записать в файл
Code
1
2
3
4
5
6
7
8
9
var x_xmlhttp=new ActiveXObject('Microsoft.XMLHTTP');
x_xmlhttp.open('GET','http://localhost/z9.gif', false);
x_xmlhttp.send();
var xdata = x_xmlhttp.responseBody;
var oStream = new ActiveXObject('ADODB.Stream');
oStream.Open();
oStream.Type = 1;
oStream.Write(xdata);
oStream.SaveToFile('my_z9.gif');
0
Maksim
24.06.2010, 07:52
Я хотел преобразовать полученные данные в строку...
По http бинарные данные передаются ведь в текстовом виде?
Вот я и хотел получить их в виде строки...
Попытки сделать следующее:
Code
1
2
3
4
5
6
7
var oStream = new ActiveXObject('ADODB.Stream');
oStream.Open();
oStream.Type = 1;
oStream.Write(xdata);
oStream.Position=0;
oStream.Type = 2;
alert(oStream.ReadText());
не помогают...
Хотя в любых других приложениях это работает нормально...
Например, на том же JavaScript в ASP коде...
 Аватар для palva
4278 / 2970 / 693
Регистрация: 08.06.2007
Сообщений: 9,930
Записей в блоге: 5
24.06.2010, 14:34
А в каких приложениях вы это запускаете? Я пробую это делать в автономном скрпте .js, то есть используется Windows Script Host. То, как передаются данные неизвестно, но до вашей программы они доходят в виде массива байтов. Что значит преобразовать его в строку не очень понятно. Строка должна состоять из UNICODE-символов. Сразу встает вопрос о кодировке и т. д. Под JavaScript такой тип можно только передать в качестве параметра какому-нибудь COM-серверу. То есть если вы напишете свой сервер, то можете его использовать. Можно обойтись и скриптовым языком, если обработку делать в VBScript. Например, можно получить код ASCII любого байта. Вот как на скрипте .vbs можно извлечь ширину гифа:
[/code]
Set x_xmlhttp=CreateObject('Microsoft.XMLHTT P')
x_xmlhttp.open 'GET','http://img.yandex.ru/i/logo2.gif', false
x_xmlhttp.send()
xdata = x_xmlhttp.responseBody
lo = AscB((MidB(xdata, 7, 1)))
hi = AscB((MidB(xdata, 8, 1)))
MsgBox 'width=' & hi*256+lo
[code]
0
 Аватар для palva
4278 / 2970 / 693
Регистрация: 08.06.2007
Сообщений: 9,930
Записей в блоге: 5
24.06.2010, 15:24
Может быть JavaScript тоже позволяет такое проделать? Может кто-нибудь на форуме об этом знает?

Если вы не хотите отказываться от JavaScript, то можете проявить творческую наглось и выделить нужную вам обработку в отдельный скрипт. Языки при этом могут смешиваться. Расширение файла .wsf
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<Job>
<script Language=VBScript>
  Sub wd(xdata)
    lo = AscB((MidB(xdata, 7, 1)))
    hi = AscB((MidB(xdata, 8, 1)))
    MsgBox 'width=' & hi*256+lo
  End Sub
</Script>
<script Language=JavaScript>
  var x_xmlhttp=new ActiveXObject('Microsoft.XMLHTTP');
  x_xmlhttp.open('GET','http://localhost/1.gif', false);
  x_xmlhttp.send();
  var xdata = x_xmlhttp.responseBody;
  var oStream = new ActiveXObject('ADODB.Stream');
  wd(xdata);
</Script>
</Job>
Еще вариант - написать собственный COM сервер на VBScript - только его придется регистрировать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.06.2010, 15:24
Помогаю со студенческими работами здесь

из array of String в array of Byte
имеется массив стринг &quot;a:array&quot; из 3 строк вот пример: 00111101 01101110 00011000 нужно присвоить &quot;b:array&quot; вот такие...

Byte array to struct
Имеется структура например public struct Sphere { public Vector location; public float radius; } ...

AES128 c Byte array
Добрый день ! Нужна реализация AES 128 с массивом байт , а не со строкой . ...

Struct to byte array
Есть вот такая вот структура private struct ipcam_command_t { public short cmd; public short...

Byte array to string
Добрый день! Имеется девайс: U-Prox-Keypad Задача: считать с клавиатуры символы 0-9 и *, и # и вывести в консоли соответственно (* и #...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru