Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Срочно нужна помощь (https://javascript.ru/forum/offtopic/47618-srochno-nuzhna-pomoshh.html)

cyber 31.05.2014 15:43

Холивара тред ( переименовано с "Срочно нужна помощь " )
 
Нужно срочно плизз, сори что не в той теме, но реально срочно.
Народ можно ли в js на клиенте, узнать сколько байт весит строка ?

l-liava-l 31.05.2014 15:49

cyber,
Ты знаешь какая кодировка?
Если юникод то 2 байта * кол во символов

Ну а так js не предоставляет апишку для управления памятью

cyber 31.05.2014 15:51

Цитата:

Сообщение от l-liava-l
Ты знаешь какая кодировка?

нет

nerv_ 31.05.2014 15:58

Цитата:

Сообщение от cyber
Срочно

Рассмешил :)

Я уже нагуглил ответ на твой вопрос. У тебя гугл сломался?

http://stackoverflow.com/questions/2...ascript-string
https://gist.github.com/mathiasbynens/1010324

Диапазоны Unicode

monolithed 31.05.2014 15:58

Цитата:

Сообщение от cyber
Народ можно ли в js на клиенте, узнать сколько байт весит строка ?

function string_size(text) {
  var size = text.length,
      byte = text.match(/[^\x00-\xff]/g)
  ;

  if (byte)
     size += byte.length;
  
  return size; 
}

alert(string_size('привет'));

kobezzza 31.05.2014 15:59

Примитивы строк в JS всегда используют UTF-8.

Ну вообще ответ на вопрос: да, конечно можно, т.к. строка - это простой числовой массив, т.е. занимаемая память = кол-во элементов * память одного элемента

PS: ща залез в стандарт и понял, что наврал :) UTF-16, а не UTF-8 :)

l-liava-l 31.05.2014 16:00

Цитата:

Сообщение от monolithed (Сообщение 314153)
function string_size(text) {
  var size = text.length,
      byte = text.match(/[^\x00-\xff]/g)
  ;

  if (byte)
     size += byte.length;
  
  return size; 
}

alert(string_size('привет'));

Нефигасе я тупой... если спросят где нахожусь, то я обижаюсь

Цитата:

Примитивы строк в JS всегда используют UTF-8
Прикольно

cyber 31.05.2014 16:06

народ всем ОГРОМНОЕ спасибо.
Цитата:

Сообщение от nerv_
Рассмешил

У меня тут типа чемпионата по прогаммирваоние, и у меня не получилось на гуглить))

dmitry111 31.05.2014 16:44

есть у js API Typed Arrays

если не ошибаюсь, с помощью него можно взвесить любые данные предварительно перегнав в бинарные данные

Кто-нибудь работал с этим API?


Объясните, как это все работает? А именно, зачем столько видов буфера:

Int8Array 	1 	8-bit twos complement signed integer 	signed char
Uint8Array 	1 	8-bit unsigned integer 	unsigned char
Uint8ClampedArray 	1 	8-bit unsigned integer 	unsigned char
Int16Array 	2 	16-bit twos complement signed integer 	short
Uint16Array 	2 	16-bit unsigned integer 	unsigned short
Int32Array 	4 	32-bit twos complement signed integer 	int
Uint32Array 	4 	32-bit unsigned integer 	unsigned int
Float32Array 	4 	32-bit IEEE floating point number 	float
Float64Array 	8 	64-bit IEEE floating point number 	double


и какой из них выбрать?


Есть еще BLOB с ним понятно, но он менее поддерживаемый..

nerv_ 31.05.2014 17:10

Цитата:

Сообщение от dmitry111
А именно, зачем столько видов буфера

Чтобы хранить данные различных типов.

Цитата:

Сообщение от dmitry111
Есть еще BLOB

кстати, да
alert(new Blob(['привет']).size);


http://www.javascripture.com/Blob


Часовой пояс GMT +3, время: 19:01.