Полезная информация

Хотите узнать больше о расширениях? Посмотрите ролики, рассказывающие о работе с расширениями Firefox.

№110-06-2006 19:40:53

Sky
Участник
 
Группа: Extensions
Откуда: Рязань
Зарегистрирован: 06-11-2004
Сообщений: 1378

Вопрос по типам данных

Вопрос из области совсем чайницких. :blush:
Присваиваю я переменной число

Выделить код

Код:

msg = 0x00001234

Надо передать его в функцию как четырехбайтное беззнаковое целое в формате, когда первым идет старший байт, последним младший.
И вообще, как можно оперировать в Java с такими данными? Например, сформировать строку:
xxxx:yyyy:zzzz:str
Где xxxx, yyyy, и zzzz - четырехбайтовые числа, а str - строка без завершающего нуля.

Если у кого есть ссылки на хорошие базовые описания Java на русском, с благодарностью приму. :)


Gentoo Linux 2007-03-23 by XOR
Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9b3pre) Gecko/2008010104
Нас мало, но мы в кедах! ;)

Отсутствует

 

№211-06-2006 16:08:08

mozilla_user
Участник
 
Группа: Members
Зарегистрирован: 05-06-2006
Сообщений: 31

Re: Вопрос по типам данных

Sky пишет

Если у кого есть ссылки на хорошие базовые описания Java на русском, с благодарностью приму. :)

Было бы cool - если бы с этого и начали ;) то есть про Java вопросик
(кстати фанатских форумов туча - рулите гуглом  )

на вскидку лекция про Java на нашем (не утверждаю что это самое лучшее)
http://www.javable.com/tutorials/fesunov/
тонкости от гуру
http://skipy.dev.juga.ru/root.html

по англицкий
at first :)
sun.com

Отсутствует

 

№311-06-2006 17:58:00

Sky
Участник
 
Группа: Extensions
Откуда: Рязань
Зарегистрирован: 06-11-2004
Сообщений: 1378

Re: Вопрос по типам данных

mozilla_user
Спасибо за ссылки, буду разбираться.
Пока нужного не нашел, но много полезной инфы.

(кстати фанатских форумов туча - рулите гуглом  )

Да что-то ничего путного не попадается. В основном описания на очень элементарном уровне и какие-то отрывочные сведения.

А по теме вопроса, ничего сказать не можете? :whiteflag:


Gentoo Linux 2007-03-23 by XOR
Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9b3pre) Gecko/2008010104
Нас мало, но мы в кедах! ;)

Отсутствует

 

№411-06-2006 23:48:32

mozilla_user
Участник
 
Группа: Members
Зарегистрирован: 05-06-2006
Сообщений: 31

Re: Вопрос по типам данных

Sky пишет

mozilla_user
Спасибо за ссылки, буду разбираться.

Да не начем!

Sky пишет

mozilla_user
А по теме вопроса, ничего сказать не можете?

Однако разбираться с частностями вам лучше сюда  (но не настаиваю :)
http://www.javable.com/forum/category.jspa?categoryID=5
или
http://forum.juga.ru/

(те же домены  ;)

Верно есть ещё форумы по Jave - которые живут и как ветки других форумов.

Однако прежде всего лучше бы вам зайти на http://sun.com или http://ru.sun.com/
(сам там не был давно - вот сейчас тоже взгляну как там дела)
и скачать там свежую документацию по Jave, которая, на мой взгляд, отличная. Если конечно Вы ещё не скачали.
Без JDK Documentation - не то что плохо - а не-во-змож-но :cry:

Отсутствует

 

№513-06-2006 16:29:46

Sky
Участник
 
Группа: Extensions
Откуда: Рязань
Зарегистрирован: 06-11-2004
Сообщений: 1378

Re: Вопрос по типам данных

Че-то я ступил и всех жестоко обманул. :)
Все вышесказанное нужно под JavaScript, а не под Java.
В общем все это нужно для расширения Firefox.

Отредактировано Sky (13-06-2006 18:34:02)


Gentoo Linux 2007-03-23 by XOR
Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9b3pre) Gecko/2008010104
Нас мало, но мы в кедах! ;)

Отсутствует

 

№613-06-2006 19:51:59

Sky
Участник
 
Группа: Extensions
Откуда: Рязань
Зарегистрирован: 06-11-2004
Сообщений: 1378

Re: Вопрос по типам данных

Чтобы было проще понять, что требуется (а то я свои посты и сам не всегда понимаю :)):

Выделить код

Код:

function writeFile( sFilePath, sFileContent )
{
  try
  {
    var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
    file.QueryInterface(Components.interfaces.nsIFile);
    file.initWithPath( sFilePath );
    if( file.exists() == true ) file.remove( false );
    var strm = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);
    strm.QueryInterface(Components.interfaces.nsIOutputStream);
    strm.QueryInterface(Components.interfaces.nsISeekableStream);
    strm.init( file, 0x04 | 0x08, 420, 0 );
    strm.write( sFileContent, sFileContent.length );
    strm.flush();
    strm.close();
  }
  catch(ex)
  {
    window.alert(ex.message);
  }
}

дальше используем эту функцию
var n = 0x12345678;
var str = "test";
var data;
<что-то делаем>
writeFile("/home/sky/test.txt", data);

В переменную data надо загнать каким-то образом n и str;
В результате в файле test.txt должно быть (по байтам):
0x12:0x34:0x56:0x78:0x00:0x00:0x00:0x04:'t':'e':'s':'t'
,где вторая четверка байт - длина строки.

З.Ы. "/home/sky/test.txt" надо заменить на свой путь к файлу. В windows это будет что-то вроде "D:\\test.txt".
З.З.Ы. Все это должно работать из расширения.


Gentoo Linux 2007-03-23 by XOR
Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9b3pre) Gecko/2008010104
Нас мало, но мы в кедах! ;)

Отсутствует

 

№714-06-2006 14:35:27

mozilla_user
Участник
 
Группа: Members
Зарегистрирован: 05-06-2006
Сообщений: 31

Re: Вопрос по типам данных

Sky пишет

Чтобы было проще понять, что требуется (а то я свои посты и сам не всегда понимаю :)):
<что-то делаем>

Делаем "что-то" например вот так

Выделить код

Код:

//f:
		function writeFile(sFilePath, num_as_hex, str_as_string)
		{
		  try
		  {
			var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
			file.initWithPath(sFilePath);
			if (!file.exists()) file.create(0x00, 0644);
			var strm = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);
			strm.init(file, (0x20 | 0x04), 00004, null);
			//calling converting function
			var output_str = convertToStrangeFormat(num_as_hex, str_as_string);
			strm.write(output_str, output_str.length);
			strm.flush();
			strm.close();
		  }
		  catch(ex)
		  {
			window.alert(ex.message);
		  }
		}
		//f: converting function
		function convertToStrangeFormat(num_as_hex, str_as_string)
		{
			var str = "";
			if (num_as_hex && str_as_string) {
				var shex = num_as_hex.toString(16);
				//на домашнее задание :-)  str_as_string.length  .........
				for (var i=0; i<shex.length; i+=2) str += "0x" + shex.substring(i, (i + 2)) + ":";
				str += str_as_string.replace(/(\w)/gi, "$1:");
                                return str.substring(0, str.length - 1);
			} 
                         return str;
		}

//calling

		writeFile("/home/sky/test.txt", 0x12345678, "test");

Получаем: 0x12:0x34:0x56:0x78:t:e:s:t
Это не совсем то, что Вам надо,
так как вам хотелось: 0x12:0x34:0x56:0x78:0x00:0x00:0x00:0x04:'t':'e':'s':'t'

Таким образом преобразование take str_as_string.length остаётся Вам на домашнее задание ;)

Отредактировано mozilla_user (14-06-2006 14:57:30)

Отсутствует

 

№816-06-2006 00:06:46

Sky
Участник
 
Группа: Extensions
Откуда: Рязань
Зарегистрирован: 06-11-2004
Сообщений: 1378

Re: Вопрос по типам данных

mozilla_user
Вы меня не совсем правильно поняли.
Я писал:

В результате в файле test.txt должно быть (по байтам):
0x12:0x34:0x56:0x78:0x00:0x00:0x00:0x04:'t':'e':'s':'t'
,где вторая четверка байт - длина строки.

Здесь ключевое слово байт. 0x12, 0x34 и т.д. это байты (их шестнадцатиричные значения). 't', 'e' - тоже отдельные байты.
В принципе проблему решил (LattyF, спасибо за подсказку, после переработки кода под JavaScript все заработало):

Выделить код

Код:

function UL(n)
{
  var temp = n;
  var bytes = "";
  for (var i = 0; i < 4; i++)
  {
    bytes += String.fromCharCode(temp % 256);
    temp /= 256;
  }
  return bytes;
}

function LPS(str)
{
  return UL(str.length)+str;
}

Результат выполнения функции UL - четыре байта с числом (оказалось, надо все-таки с младшего байта начинать, описание протокола врало), LPS - результат та самая строка с префиксированной длинной.


Gentoo Linux 2007-03-23 by XOR
Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9b3pre) Gecko/2008010104
Нас мало, но мы в кедах! ;)

Отсутствует

 

№916-06-2006 01:35:59

mozilla_user
Участник
 
Группа: Members
Зарегистрирован: 05-06-2006
Сообщений: 31

Re: Вопрос по типам данных

Sky пишет

mozilla_user
Вы меня не совсем правильно поняли.
Здесь ключевое слово байт

:D Ржу над собой! Получается я вас совсем неправильно понял. У меня ещё была такая мысль - но я её отверг как вредную :D
Рад, что решение LattyF вам подходит...

Отредактировано mozilla_user (16-06-2006 01:40:03)

Отсутствует

 

№1016-06-2006 19:32:20

Sky
Участник
 
Группа: Extensions
Откуда: Рязань
Зарегистрирован: 06-11-2004
Сообщений: 1378

Re: Вопрос по типам данных

:)
Не зря же я говорил, что

свои посты и сам не всегда понимаю :)


Gentoo Linux 2007-03-23 by XOR
Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9b3pre) Gecko/2008010104
Нас мало, но мы в кедах! ;)

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]