Страницы: 1
Вопрос из области совсем чайницких.
Присваиваю я переменной число
Надо передать его в функцию как четырехбайтное беззнаковое целое в формате, когда первым идет старший байт, последним младший.
И вообще, как можно оперировать в 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
Нас мало, но мы в кедах! ;)
Отсутствует
Если у кого есть ссылки на хорошие базовые описания Java на русском, с благодарностью приму.
Было бы cool - если бы с этого и начали то есть про Java вопросик
(кстати фанатских форумов туча - рулите гуглом )
на вскидку лекция про Java на нашем (не утверждаю что это самое лучшее)
http://www.javable.com/tutorials/fesunov/
тонкости от гуру
http://skipy.dev.juga.ru/root.html
по англицкий
at first
sun.com
Отсутствует
mozilla_user
Спасибо за ссылки, буду разбираться.
Пока нужного не нашел, но много полезной инфы.
(кстати фанатских форумов туча - рулите гуглом )
Да что-то ничего путного не попадается. В основном описания на очень элементарном уровне и какие-то отрывочные сведения.
А по теме вопроса, ничего сказать не можете?
Gentoo Linux 2007-03-23 by XOR
Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9b3pre) Gecko/2008010104
Нас мало, но мы в кедах! ;)
Отсутствует
mozilla_user
Спасибо за ссылки, буду разбираться.
Да не начем!
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 - не то что плохо - а не-во-змож-но
Отсутствует
Че-то я ступил и всех жестоко обманул.
Все вышесказанное нужно под 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
Нас мало, но мы в кедах! ;)
Отсутствует
Чтобы было проще понять, что требуется (а то я свои посты и сам не всегда понимаю ):
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
Нас мало, но мы в кедах! ;)
Отсутствует
Чтобы было проще понять, что требуется (а то я свои посты и сам не всегда понимаю :)):
<что-то делаем>
Делаем "что-то" например вот так
//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)
Отсутствует
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
Нас мало, но мы в кедах! ;)
Отсутствует
mozilla_user
Вы меня не совсем правильно поняли.
Здесь ключевое слово байт
Ржу над собой! Получается я вас совсем неправильно понял. У меня ещё была такая мысль - но я её отверг как вредную
Рад, что решение LattyF вам подходит...
Отредактировано mozilla_user (16-06-2006 01:40:03)
Отсутствует
Не зря же я говорил, что
свои посты и сам не всегда понимаю
Gentoo Linux 2007-03-23 by XOR
Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9b3pre) Gecko/2008010104
Нас мало, но мы в кедах! ;)
Отсутствует
Страницы: 1