dmitry111, мне кажется ты просто не понимаешь, что ты хочешь.
Почитай книжечку по простому С и сразу разберёшься :) А вообще есть в JS тип Array Buffer, который представляет из себя контейнер для произвольного бинарного буфера фиксированной длины, но работать с этим нельзя, т.к. нужно иметь представление о том, что же лежит в этой области памяти. Для этого есть специальные представления, вроде: Uint8Array (массив положительных 8-ми битных целых чисел), StringBuffer (массив символов), Blob (API для представления производного бинарного файла) и т.д. т.е. некоторое "нечто" которое лежит в памяти мы представляем как уже более абстрактное представление, с которым можно работать. Зачем это всё нужно? Для написания эффективных и быстрых приложений, там где это критично, например при работе с графикой. Или же нужно открыть в браузере какой то файл, который не поддерживается из коробки браузером, например, файл Word или проиграть аудио в формате Flac - т.е. работаем напрямую с бинарным файлом и пишем "драйвер" для работы с АПИ браузера, например в FF просмоторщик PDF работает именно так. Цитата:
Пример использования Blob:
var code = new Blob(["alert('hello world');"], {
type: 'application/javascript'
});
var script = document.createElement('script');
script.src = URL.createObjectURL(code);
document.head.appendChild(script);
|
Цитата:
да не, на самом деле я знаю чего я хочу)) Мне нужно передавать данные с сервера на клиент и обратно, при этом данные должны иметь как можно меньший вес (реалтайм игра) Поэтому нужно их максимально сжать перед отправкой и разжать по прибытию) Вот думал использовать Typed Array с вебсокетами. Ну а книжку по Си изучать это конечно нужно, но ради двух функций неохота) Я когда на gamedev.ru показал приблизительный объем данных приходящий на клиент на один тик:
[
// game
[
[
[1, 2],
{
'1': [64, 320, 0, 0, 1, 'bob'],
'3': [736, 320, 180, 0, 2, 'jek'],
'5': null
},
true
],
[
[3],
{
'1': [
[190, 72],
[10, 4],
[100, 24]
[332, 94],
[390, 72],
[159, 334]
],
'3': [
[100, 320],
[120, 320],
[130, 320],
[140, 320],
[339, 44],
[300, 994]
]
},
false
]
],
// coords [x, y]
[400, 320],
// panel
[97, 777, 3],
// stat [tBodies, tHead]
[
[
[6, 0, ['bot 6', '', 5, 1], 0],
[1, 0, ['bot 1', 'dead', 2, 3], 0],
[4, 0, ['bot 4', '', 0, 4], 0],
[3, 1, ['bot 3', 'dead', 2, 0], 0],
[8, 1, ['bot 8', '', 1, 10], 0],
[23, 1, ['bot 23', '', 1, 8], 0],
[12, 1, ['bot 12', 'dead', 1, 7], 0],
[33, 1, null, 0],
[17, 2, ['bot 17'], 0],
[64, 2, ['bot 64'], 0],
[19, 2, null, 0]
],
[
[0, [3, '', 20, '']],
[1, [4, '', 30, '']]
]
],
// chat [name, text]
['User', 'Hello World!'],
// vote [vote, data]
[
'ban',
[
'Забанить пользователя User?', // 0: title
['Да', 'Нет'], // 1: values
null // 2: next
]
]
]
они ужаснулись)) |
Цитата:
Цитата:
Намного же приятней и понятней писать uint вместо Uint8Array |
dmitry111, у веб сокетов, три вида отправляемых данных: string, blob, array buffer.
Т.е. ставишь binaryType = 'arraybuffer'; и работаешь :) Цитата:
Т.е. будет набор элементарных типов и можно будет создавать "свои" типы с помощью структур. |
Цитата:
|
Цитата:
Что-то я не помню такого треда в рассылке |
Цитата:
const Point2D = new StructType({ x: uint32, y: uint32 });
const Color = new StructType({ r: uint8, g: uint8, b: uint8 });
const Pixel = new StructType({ point: Point2D, color: Color });
const Triangle = Pixel.Array(3);
let t = Triangle([{ point: { x: 0, y: 0 }, color: { r: 255, g: 255, b: 255 } },
{ point: { x: 5, y: 5 }, color: { r: 128, g: 0, b: 0 } },
{ point: { x: 10, y: 0 }, color: { r: 0, g: 0, b: 128 } }]);
Built-in Value Types uint8, uint8Clamped : 8-bit unsigned integers uint16 : 16-bit unsigned integers uint32 : 32-bit unsigned integers int8 : 8-bit signed integers int16 : 16-bit signed integers int32 : 32-bit signed integers float32 : 32-bit IEEE754 floating-point numbers float64 : 64-bit IEEE754 floating-point numbers Цитата:
Т.е. http://wiki.ecmascript.org/doku.php?id=strawman:guards
let x :: Number = 37;
function f(p :: String, q :: MyType) :: Boolean { ... }
let o = {a :: Number : 42, b: "b"};
И было бы здорово иметь какой нить аналог указателей, чтобы можно было делать так:
function foo(*a) {
&a = 2;
}
var a = 3;
foo(*a);
a // 2
А ещё реализацию легковесных потоков как в Rust ... эх :) |
я эпический нуб, запорол задание из за того что вместо того что бы изучить либу без док. я начал пилить велосепед. Как от учится от велосепедо стоения?
|
Цитата:
|
Цитата:
я таким образом начал учить ангуляр :) тоже олимпиаду запорол |
| Часовой пояс GMT +3, время: 23:45. |