forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   FAQ (http://forum.boolean.name/forumdisplay.php?f=53)
-   -   Преобразования типов (http://forum.boolean.name/showthread.php?t=2337)

SubZer0 09.01.2007 06:20

Преобразования типов
 
Короче наткнулся я на проблему что rms поддерживает только байты а мне нада было туда сохранять integer и придумал я такую функцию по перегону типов...

хз может можно проще, но мне чето больше так понравилось... ;)

Код:

    public byte [] ToData(int Var) {
        byte Data [] ={0,0,0,0};
        Data[0]=(byte)(Var&255);
        Data[1]=(byte)((Var>>>8)&255);
        Data[2]=(byte)((Var>>>16)&255);
        Data[3]=(byte)((Var>>>24)&255);
        return Data;
    }
   
    public int FromData(byte [] Data) {
        int Var;
        Var=(int)Data[3];
        Var=(Var<<8)|(((int)Data[2])&255);
        Var=(Var<<8)|(((int)Data[1])&255);
        Var=(Var<<8)|(((int)Data[0])&255);
        return Var;
    }

хз мож комунить пригодится...

impersonalis 09.01.2007 13:40

Re: Преобразования типов
 
Я кнечно с этимя яыком не работаю, но ">>>" - немного ли стрелок в побитовом смещении? И зачем инициализировать массив перечислением? И почему не организовать всё это дело в цикле?

SubZer0 09.01.2007 18:31

Re: Преобразования типов
 
есть два способа сдвига:

ротация: выпадающие биты вставляются с другой стороны... (>>)
сдвиг: выпадающие биты теряются, а вставляются нули... (>>>)

не думаю, что ради трех-четырех операций рационально заводить новую переменную и цикл... это же мобила ;) тут низкоуровневая оптимизация фарева :) (развертка мелких циклов и всякая байда)

ViNT 21.06.2007 23:36

Re: Преобразования типов
 
А есть в java какой нибуть 2-х байтовый тип(типа word в pascal)?


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot