Подробности о приложении:
- Разработано в Visual Studio 2019 (Windows 10)
- Разработано на платформе
UWP
с языкамиC#
иXAML
Приложение получает информацию с удаленного сервера. Соединение с розетками используется для связи между двумя сторонами.
Для связи с сервером приложение должно отправлять данные в байтовом массиве, чтобы их можно было правильно прочитать.
В настоящее время я использую этот метод для передачи моих переменных в байтах []:
var ID_MESSAGE_ARRAY = BitConverter.GetBytes((int)MESSAGE);
var WAY_ARRAY = BitConverter.GetBytes((int)WAY);
var SIZE_ARRAY = BitConverter.GetBytes((int)SIZE);
var TYPE_STATE_DEVICE_ARRAY = BitConverter.GetBytes((int)TYPE_STATE_DEVICE.LOGIN);
var HexString = ID_MESSAGE_ARRAY.Concat(WAY_ARRAY).Concat(SIZE_ARRAY).Concat(TYPE_STATE_DEVICE_ARRAY).Concat(ABO).ToArray();
В результате этого сообщения я должен отправить string
. Поэтому я использую этот метод для кодирования моего string
в bytes[]
:
string ABONNE = "TEST";
var ABO = Encoding.ASCII.GetBytes(ABONNE);
Но у меня есть проблема, это string
должно быть на 32 байтах, тогда как когда я декодирую (hexa) на другой стороне, я нахожу это:
Получен результат: 54-45-53-54
Ожидаемый результат: 54-45-53-54-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Чтобы найти этот результат, как я могу передать свой string ABONNE
в string[32]
, а затем в bytes[]
?
2 ответа
Как насчет того, чтобы передать строку в 32-байтовый массив напрямую:
string ABONNE = "TEST";
Byte[] ABO = new byte[32];
Encoding.ASCII.GetBytes(ABONNE,0,ABONNE.Length,ABO,0);
Оба ноля для 0-индекса (начальная позиция). Также я создал пустой массив из 32 байтов, после чего он заполняется байтами из ABONNE
. Пожалуйста, будьте осторожны, если Encoding.ASCII.GetBytes(ABONNE).Length
больше 32 байт, вы получите исключение
Используйте StringBuilder
, чтобы дополнить вашу строку необходимым количеством нулей.
StringBuilder sb = new StringBuilder(ABONNE);
sb.Append((char)0,32-ABONNE.Length);
Обновлено рабочий пример вместо псевдокода.
Похожие вопросы
Связанные вопросы
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.