Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Jotun
61 / 62 / 44
Регистрация: 05.12.2014
Сообщений: 475
1

Добавить к массиву его размер

16.12.2015, 19:15. Просмотров 866. Ответов 6
Метки нет (Все метки)

Есть массив байт. К нему в начало нужно добавить 2 байта его размера.
Как бы покрасивей это сделать
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.12.2015, 19:15
Ответы с готовыми решениями:

По двумерному массиву массиву А получить одномерный массив В, присвоив его k-му элементу значение TRUE
По двумерному массиву массиву А получить одномерный массив В, присвоив его k-му...

Добавить двумерных массивов к 1 большому двумерному массиву
есть 9 мелких массивов и 1 большой, который по длине равен суммам длин всех...

Как к байтовому массиву добавить другой байтовый массив?
Добрый вечер. Нужна помощь. У меня есть 2 байтовых массива, string temp...

Создание и доступ к массиву по его имени
Не знаю, правильно ли я сформулировал заголовок темы, но суть такова....

Индекс должен быть положительным числом, а его размер не должен превышать размер коллекции
Подскажите, в чем ошибка? Выдает ошибку: Индекс за пределами диапазона....

6
Someone007
2434 / 1911 / 871
Регистрация: 09.05.2015
Сообщений: 4,728
Завершенные тесты: 1
16.12.2015, 19:24 2
Создать новый массив нужного размера и скопировать в него старый.
C#
1
2
3
byte[] oldarr = new byte[10];
byte[] newarr = new byte[oldarr.Length + 2];
Array.Copy(oldarr, 0, newarr, 2, oldarr.Length);
0
Jotun
61 / 62 / 44
Регистрация: 05.12.2014
Сообщений: 475
16.12.2015, 19:25  [ТС] 3
ок, а как в 2 первые байта записать размер получившегося нового массива?
0
Someone007
2434 / 1911 / 871
Регистрация: 09.05.2015
Сообщений: 4,728
Завершенные тесты: 1
16.12.2015, 19:42 4
Лучший ответ Сообщение было отмечено Jotun как решение

Решение

C#
1
2
3
byte[] sizeBytes = BitConverter.GetBytes(newarr.Length);
newarr[0] = sizeBytes[0];
newarr[1] = sizeBytes[1];
В таком случае корректный размер будет только для массивов размером меньше 0xFFFF, т.к. в 2 байта большее число не поместить.
1
Jotun
61 / 62 / 44
Регистрация: 05.12.2014
Сообщений: 475
16.12.2015, 19:59  [ТС] 5
Цитата Сообщение от Someone007 Посмотреть сообщение
В таком случае корректный размер будет только для массивов размером меньше 0xFFFF, т.к. в 2 байта большее число не поместить.
Да, так и нужно.

sizeBytes.Length.ToString() - выдаёт 4

получается что массив состоит из 4-х элементов, так и надо?
0
Someone007
2434 / 1911 / 871
Регистрация: 09.05.2015
Сообщений: 4,728
Завершенные тесты: 1
16.12.2015, 20:09 6
C#
1
2
3
4
5
6
7
byte[] oldarr = new byte[10];
byte[] newarr = new byte[oldarr.Length + 2];
Array.Copy(oldarr, 0, newarr, 2, oldarr.Length);
 
byte[] sizeBytes = BitConverter.GetBytes(oldarr.Length);
newarr[0] = sizeBytes[0];
newarr[1] = sizeBytes[1];
Тут наверно нужен был размер оригинального массива...

Еще вот так можно:
C#
1
2
3
byte[] arr = new byte[10];
byte[] size = BitConverter.GetBytes((ushort)arr.Length);
byte[] newArr = size.Concat(arr).ToArray();
Цитата Сообщение от Jotun Посмотреть сообщение
sizeBytes.Length.ToString() - выдаёт 4
получается что массив состоит из 4-х элементов, так и надо?
Вам абсолютно не важен размер массива sizeBytes. Да он состоит из 4 байт, т.к. int имеет такой размер.
0
Jotun
61 / 62 / 44
Регистрация: 05.12.2014
Сообщений: 475
16.12.2015, 20:12  [ТС] 7
или это потому что Length - integer и он его в 4 отдельных байта переводит?

Добавлено через 3 минуты
Цитата Сообщение от Someone007 Посмотреть сообщение
Тут наверно нужен был размер оригинального массива...
Нет, всё правильно, нужен был размер вместе с "размером"

спасибо
0
16.12.2015, 20:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.12.2015, 20:12

В одномерном массиву найти минимальный элемент и переставить его со вторым отрицательным элементом
для заданного одномерного массива найти минимальный элемент и переставить его...

Как найти и добавить размер файла
Есть код: static void Main() { //получаем переменную...

Максимизировать стороннее окно и получить его размер
нужно максимизировать стороннее окно и получить его размер(хэндл содержится в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru