Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.12.2010, 21:55
Аватар для KOLANICH
Профессор
Отправить личное сообщение для KOLANICH Посмотреть профиль Найти все сообщения от KOLANICH
 
Регистрация: 22.11.2008
Сообщений: 277

кто может обьяснить, как работает этот код
function data_string(data) // Generates the binary data string from character / multibyte data
{
	var str='';
	for(var i=0,len=data.length;i<len;i++){
           var a=String.fromCharCode(data[i].charCodeAt(0)&0xff);
            console.log(a+"\n"+str+"\n"+data[i]+"\n"+data.charCodeAt(i)+"\n"+data[i].charCodeAt(0));
// var a=String.fromCharCode(data.charCodeAt(i)&0xff);//это чем хуже?
// var a=String.fromCharCode(data[i]&0xff);//или это
// var a=String.fromCharCode(data.charCodeAt(i));//или вообще  это
            str+=a;
        }
	return str;
};


и что происходит в случае многобайтовых символов
и нет ли встроенного аналога в firefox

Последний раз редактировалось KOLANICH, 25.12.2010 в 22:02.
Ответить с цитированием
  #2 (permalink)  
Старый 25.12.2010, 23:01
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

function data_string1(data) // Generates the binary data string from character / multibyte data
{
	var str='';
	for(var i=0,len=data.length;i<len;i++){
           var a=String.fromCharCode(data[i].charCodeAt(0)&0xff);
            console.log(a+"\n"+str+"\n"+data[i]+"\n"+data.charCodeAt(i)+"\n"+data[i].charCodeAt(0));
            str+=a;
        }
	return str;
};
function data_string2(data) // Generates the binary data string from character / multibyte data
{
	var str='';
	for(var i=0,len=data.length;i<len;i++){
			var a=String.fromCharCode(data.charCodeAt(i)&0xff);//это чем хуже?
            console.log(a+"\n"+str+"\n"+data[i]+"\n"+data.charCodeAt(i)+"\n"+data[i].charCodeAt(0));

            str+=a;
        }
	return str;
};
function data_string3(data) // Generates the binary data string from character / multibyte data
{
	var str='';
	for(var i=0,len=data.length;i<len;i++){
			var a=String.fromCharCode(data[i]&0xff);//или это
            console.log(a+"\n"+str+"\n"+data[i]+"\n"+data.charCodeAt(i)+"\n"+data[i].charCodeAt(0));
            str+=a;
        }
	return str;
};
function data_string4(data) // Generates the binary data string from character / multibyte data
{
	var str='';
	for(var i=0,len=data.length;i<len;i++){
			var a=String.fromCharCode(data.charCodeAt(i));//или вообще  это
            console.log(a+"\n"+str+"\n"+data[i]+"\n"+data.charCodeAt(i)+"\n"+data[i].charCodeAt(0));
            str+=a;
        }
	return str;
};
alert(data_string1('йцу'));
alert(data_string2('йцу'));
alert(data_string3('йцу'));
alert(data_string4('йцу'));
Ответить с цитированием
  #3 (permalink)  
Старый 25.12.2010, 23:03
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от KOLANICH
это чем хуже?
по поводу твоеих вариантов? ядал овет/
только один из них дает тот же результат
Ответить с цитированием
  #4 (permalink)  
Старый 26.12.2010, 00:08
Аватар для KOLANICH
Профессор
Отправить личное сообщение для KOLANICH Посмотреть профиль Найти все сообщения от KOLANICH
 
Регистрация: 22.11.2008
Сообщений: 277

и ещё вопрос
почему не работает
function toSinglebyte(data)
{
	var data_string='';
	for(var i=0,il=data.length;i<il;i++){
		var cCode=data.charCodeAt(i);
       
		data_string+=String.fromCharCode(cCode>>>8);
                         data_string+=String.fromCharCode(cCode&0xff);
		
	}
	return data_string;
};


//window.location.href="data:text/plain;base64,"+btoa(toSinglebyte("qwerty"));
window.location.href="data:text/plain;charset=UTF-8;base64,"+btoa(toSinglebyte("qwertyйцукен"));

Последний раз редактировалось KOLANICH, 26.12.2010 в 00:42.
Ответить с цитированием
  #5 (permalink)  
Старый 26.12.2010, 10:43
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

KOLANICH, Вы будете удивлены, но символ q уже занимает один байт.
А еще бывают символы, занимающие 3 и даже 4 байта.
Ответить с цитированием
  #6 (permalink)  
Старый 26.12.2010, 15:27
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Сообщение от KOLANICH
a любой символ в utf-8 занимает 2 байта
Лолщито? RTFM!
Ответить с цитированием
  #7 (permalink)  
Старый 26.12.2010, 17:11
Аватар для KOLANICH
Профессор
Отправить личное сообщение для KOLANICH Посмотреть профиль Найти все сообщения от KOLANICH
 
Регистрация: 22.11.2008
Сообщений: 277

function splitBytes(data)
{
	var data_string='';
	for(var i=0,il=data.length;i<il;i++){
		var cCode=data.charCodeAt(i);
		var bytes=[],highestByte=0;
		for(var j=0;j<4;j++){
			bytes[j]=cCode>>>(8*j);
				if(bytes[j])highestByte=j;
		}
		console.log(bytes,highestByte);

		if(highestByte==0){data_string+=String.fromCharCode(bytes[0]);continue;}
		data_string+=String.fromCharCode(bytes[highestByte]|(12*16));
		for(var j=highestByte-1;j>=0;j--){
			data_string+=String.fromCharCode(bytes[j]|(8*16));
		}
		
	}
	return data_string;
};

var xhr=new XMLHttpRequest();
xhr.open("GET","http://www.google.com/recaptcha/api/image?c=03AHJ_VuuTZPpE0MzmQ0H3MXLoflLPf6Ofe-gOvgoorBrOKN9f6iHglvIkBp8Hm6gPT6au_9pPLqAfoKFKcxNF-14dUbxfKmN34nuVpLvddLiSEY52pYuRcIuSj3vCwJ4P2rDPQI49Ej9O65sPTXh0CskwWbohadL9GA",false);
//xhr.overrideMimeType('text/plain; charset=x-user-defined');  

xhr.send();


var imgbase64=btoa(splitBytes(xhr.responseText));
window.location.href="data:image/jpeg;base64,"+imgbase64;

console.log(img);

тоже хреново пашет

Последний раз редактировалось KOLANICH, 26.12.2010 в 17:30.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Открытие div блока при первом визите на сайт Nushaba Общие вопросы Javascript 28 20.12.2013 21:24
Драгабл работает не так как надо valek1989 jQuery 0 16.11.2009 18:09
Подскажите кто может Matvey Общие вопросы Javascript 2 23.07.2009 09:04
Сторонние библиотеки - быть или не быть? IIIEPJIOK Оффтопик 64 21.03.2009 19:39
Может кто подсказать как можно сделать submit из левого фрейма в правый maxander Internet Explorer 1 28.11.2008 10:15