Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > копирование int в byte[]


Автор: agealex 3.6.2009, 19:28
Есть какой нибудь аналог memcpy ну или что нибудь в таком же духе ?  smile 

Автор: jonie 3.6.2009, 19:39
int не ссылочный, byte[] ссылочный... сомневаюсь что без unsave можно "скопировать" .. Наверно быстро получится нечто вроде
Код

int a=...;
byte[4] ar= {a&0xFF000000 >> 24; a&0x00FF0000 >> 16; a&0x0000FF00>>8;a&0xFF};
....

Автор: 1stain 3.6.2009, 20:10
BitConverter.GetBytes()

Автор: agealex 3.6.2009, 23:17
Честное слово последний вариант понравился больше всего, намного лучше побитового сдвига, marshallinga, перекнверчивания по 10 раз. При много благодарен smile. Если у кого еще есть варианты - не стесняйтесь докладывайте 

Автор: jonie 4.6.2009, 00:05
ну так битконвертор это unsafe:
Код
public static unsafe byte[] GetBytes(int value)
{
    byte[] buffer = new byte[4];
    fixed (byte* numRef = buffer)
    {
        *((int*) numRef) = value;
    }
    return buffer;
}
8-) так что в чем-то я прав...

Автор: agealex 4.6.2009, 00:49
Цитата

8-) так что в чем-то я прав...


ну в принцепи да smile

у меня самый короткий на основе прочитанного получился 2 строчки
Код

 byte[] buffer1= BitConverter.GetBytes(IntValue);
 buffer1.CopyTo(buffer2, joffset);

можно наверное их и  в одну строку наверное совместить, еще не успел попробывать

Автор: DVariuS 4.6.2009, 09:00
Цитата(agealex @  4.6.2009,  00:49 Найти цитируемый пост)
можно наверное их и  в одну строку наверное совместить, еще не успел попробывать

Стремление к максимальному укорачиванию кода - большая ошибка. Код всегда должен быть эффективен и понятен, длина при этом не имеет никакого значения.

Автор: agealex 4.6.2009, 10:36
Цитата

Стремление к максимальному укорачиванию кода - большая ошибка. Код всегда должен быть эффективен и понятен, длина при этом не имеет никакого значения.

Не спорю просто до этого долгое время пользовался for  И побитовым сдвигом, ну или чем нибудь другим, а тут в 2 строчки крайне понравилось

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)