powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Код символа в ASCII символ
8 сообщений из 8, страница 1 из 1
Код символа в ASCII символ
    #39271144
Фотография Poppler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть набор number в диапазоне от 0 до 255 (на самом деле это протащеный при помощи emscripten из C++ в JavaScript std::vector<unsigned char> хранящий png картинку) которые представляют собой коды символов.
Проблема в том, что преобразовать в ASCII символы можно только значения от 0 до 127, всё что от 128 до 255 становиться UNICODE. Преобразовать пытаюсь так:

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
var myVec = new Module.VectorByte(image);

var bb = [];
for (var i = 0; i < myVec.size(); ++i)
{
    var c = String.fromCharCode(myVec.get(i));
    bb.push(c);
}

var myBlob = new Blob(bb, {type : 'image/png'});
var myUrl = urlCreator.createObjectURL( myBlob );

var img = document.createElement('img');
img.src = myUrl;
document.body.appendChild(img);



Вопрос, как сконвертировать эти числа в ASCII символы?
...
Рейтинг: 0 / 0
Код символа в ASCII символ
    #39271146
Фотография Poppler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пример проблемы, заголовок png должен представлять собой
Код: plaintext
0x89 0x50 0x4E 0x47
, но т.к.
Код: plaintext
0x89
больше десятичного
Код: plaintext
127
то получается такой заголовок
Код: plaintext
0xC2 0x89 0x50 0x4E 0x47
и такое поведение во всём выводе после конвертации. PNG после этого естественного оказывается повреждён.
...
Рейтинг: 0 / 0
Код символа в ASCII символ
    #39271189
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Poppler,

а зачем байтовый массив в строку превращать? Его ж можно сразу Blob'у скормить
...
Рейтинг: 0 / 0
Код символа в ASCII символ
    #39271201
Фотография Poppler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилPoppler, а зачем байтовый массив в строку превращать? Его ж можно сразу Blob'у скормить

Каким образом?
У объекта полученого так
Код: javascript
1.
var myVec = new Module.VectorByte(image);

есть два метода
Код: javascript
1.
get(int)

и
Код: javascript
1.
size()

. Больше никак к содержимому
Код: javascript
1.
VectorByte

доступа не получить (возможно я ошибаюсь). Поэтому приходиться в цикле перебирать по байтово.
В документации к
Код: javascript
1.
Blob

сказано, что в конструктор
Код: javascript
1.
Blob

можно передать Array of ArrayBuffer, ArrayBufferView, Blob, DOMString objects, or a mix of any of such objects, that will be put inside the Blob..
Когда я пытался создать Uint8Array и передать в конструктор блоба то получал на выходе в файле png вместо кодов символов строковое представление этих кодов т.е. вместо символа с кодом 137 я получал три символа 1, 2, и 3.
Есть какой-то другой способ создания блоба?
...
Рейтинг: 0 / 0
Код символа в ASCII символ
    #39271203
Фотография Poppler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Popplerвместо символа с кодом 137 я получал три символа 1, 3, и 7.

fixed
...
Рейтинг: 0 / 0
Код символа в ASCII символ
    #39271207
Фотография Poppler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дополнение, в коде
Код: javascript
1.
var myVec = new Module.VectorByte(image);

image является указателем на C++ код полученный вот так
...
Рейтинг: 0 / 0
Код символа в ASCII символ
    #39271214
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PopplerPopplerвместо символа с кодом 137 я получал три символа 1, 3, и 7.

конструктору Blob первый параметр неправильно передал.
передай его как массив из единственного Uint8Array
...
Рейтинг: 0 / 0
Код символа в ASCII символ
    #39271218
Фотография Poppler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилпередай его как массив из единственного Uint8Array

Передал, как массив с одним элементом Int8Array. Сработало, большое спасибо.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Код символа в ASCII символ
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]