Преобразование массива байтов в строку в C#
В этом посте будет обсуждаться, как преобразовать массив байтов в строку в C#.
1. Использование Encoding.GetString() метод
Чтобы декодировать все байты в массиве байтов в строку, используйте Encoding.GetString() метод. Несколько схем декодирования доступны в Encoding учебный класс — UTF8 , Unicode , UTF32 , ASCII , так далее.
using System ;
using System . Text ;
public class Example
public static void Main ( )
byte [ ] bytes = Encoding . Default . GetBytes ( «ABC123» ) ;
Console . WriteLine ( «Byte Array is: » + String . Join ( » » , bytes ) ) ;
string str = Encoding . Default . GetString ( bytes ) ;
Console . WriteLine ( «The String is: » + str ) ;
Массив байтов: 65 66 67 49 50 51
Строка: ABC123
2. Использование Convert.ToBase64String() метод
Чтобы декодировать байты, закодированные цифрами с основанием 64, используйте Convert.ToBase64String() метод. Это показано ниже:
using System ;
public class Example
public static void Main ( )
byte [ ] bytes = Convert . FromBase64String ( «QUJDMTIz» ) ;
Console . WriteLine ( «Byte Array is: » + String . Join ( » » , bytes ) ) ;
string str = Convert . ToBase64String ( bytes ) ;
Console . WriteLine ( «The String is: » + str ) ;
Массив байтов: 65 66 67 49 50 51
Строка: QUJDMTIz
3. Использование MemoryStream Class
Здесь идея состоит в том, чтобы создать поток байтов из указанного массива байтов. Затем прочитайте все символы из потока байтов и верните поток в виде строки.
В следующем примере кода показано, как это реализовать. Решение автоматически пытается определить используемую кодировку с помощью метки порядка байтов (BOM) в потоке байтов. Если не найдено, UTF-8 предполагается кодировка.
Преобразование byte[] в string
Получаю сообщение от сервера по сокету. Метод Receive в качестве параметра принимает byte[] , и, так как я не знаю какого размера будет сообщение, выделяю память с запасом, например, 100 байт.
byte[] byteMessage = new byte[100]; socket.Receive(byteMessage);
После получения конвертирую в строку с помощью:
string strMessage = Encoding.Default.GetString(byteMessage);
- Можно ли получить по сокету размер получаемого сообщения?
- Если нельзя, то как определить конец полученого сообщения?
Отслеживать
11.5k 8 8 золотых знаков 42 42 серебряных знака 69 69 бронзовых знаков
Преобразование массива байтов в строку в Java
В этом посте мы обсудим, как преобразовать массив байтов в строку в Java.
Мы знаем, что строка хранит текстовые данные в Java, и byte[] хранит двоичные данные, поэтому следует избегать преобразования между ними. Тем не менее, мы можем оказаться в ситуации, когда у нас нет выбора. В этом посте рассказывается, как преобразовать массив байтов в строку в Java с указанием кодировки символов и без нее.
1. Без кодировки символов
Мы можем преобразовать byte array в String для набора символов ASCII, даже не указывая кодировку символов. Идея состоит в том, чтобы пройти byte[] в конструктор String.
Как можно перевести byte в string
Как в С# string перевести в byte?
Есть переменная string str = ‘3d’ или ‘0x3d’; Нужно получить значение типа byte bt = 0x3d;.
«Вшить» в файл имя файла. Или как из string перевести в byte[]
Здравствуйте. Считываю файл, получаю массив байтов. Сохраняю его имя, расширение, хеш в переменные.
Как перевести byte[] или переменную типа IntPtr к типу byte[] (ассемблерные инструкции)?
Наткнулась на проблему, нужно перевести тип IntPtr в массив ассемблерной инструкции. Вот пример.
Как String перевести в Byte?
type digest = array of byte; procedure md5digest(var message; len: word; var d: digest); .
6277 / 3562 / 898
Регистрация: 28.10.2010
Сообщений: 5,926
Сообщение было отмечено Памирыч как решение
Решение
1 2 3 4 5 6 7 8 9 10 11 12
using System; using System.Text; class Program { static void Main(string[] args) { byte[] str = new byte[] { 0x7B, 0x22, 0x62, 0x61, 0x6C, 0x61, 0x6E, 0x63, 0x65, 0x22, 0x3A, 0x30, 0x2C, 0x22, 0x62, 0x6F }; Console.WriteLine(Encoding.ASCII.GetString(str)); } }
Первая строка с картинки
Регистрация: 16.07.2012
Сообщений: 50
Петррр, огромное спасибо
и еще вопрос:
как можно сделать чтобы байты брались из текстбокса?
byte[] str = new byte[] { textBox2.Text }; string strw = (Encoding.ASCII.GetString(str));
не получиться
6277 / 3562 / 898
Регистрация: 28.10.2010
Сообщений: 5,926
byte[] bytes = Encoding.ASCII.GetBytes(textBox1.Text); string str = Encoding.ASCII.GetString(bytes);
Регистрация: 16.07.2012
Сообщений: 50
Петррр, что то не работает..
в конечный итог выбивает те байты которые я и вводил
6277 / 3562 / 898
Регистрация: 28.10.2010
Сообщений: 5,926
Вместо ASSCII используйте UTF8
Регистрация: 16.07.2012
Сообщений: 50
Петррр, тот же результат..
дело не в кодировке..дело в коде.
6277 / 3562 / 898
Регистрация: 28.10.2010
Сообщений: 5,926
Дело в Вас.
Регистрация: 16.07.2012
Сообщений: 50
Петррр, я прошу вас помочь возможно я чтото не понимаю, так разьясните пожалуйста
6277 / 3562 / 898
Регистрация: 28.10.2010
Сообщений: 5,926
1. Код во втором посте работает?
2. Я не знаю куда там у Вас исчезают байты. Гадать не умею, потому как Вы не показали ни строчки кода.
Регистрация: 16.07.2012
Сообщений: 50
Код который вы дали(1):
1 2 3 4 5 6 7 8 9 10 11 12
using System; using System.Text; class Program { static void Main(string[] args) { byte[] str = new byte[] { 0x7B, 0x22, 0x62, 0x61, 0x6C, 0x61, 0x6E, 0x63, 0x65, 0x22, 0x3A, 0x30, 0x2C, 0x22, 0x62, 0x6F }; Console.WriteLine(Encoding.ASCII.GetString(str)); } }
Он работает.
Код который вы дали(2):
byte[] bytes = Encoding.ASCII.GetBytes(textBox1.Text); string str = Encoding.ASCII.GetString(bytes);
Не работает. Он выбивает те же байты что я и ввел..
6277 / 3562 / 898
Регистрация: 28.10.2010
Сообщений: 5,926
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
using System; using System.Text; using System.Diagnostics; class Program { static void Main(string[] args) { string str = "\"balance\":0,\"bo"; byte[] bytes1 = Encoding.ASCII.GetBytes(str); byte[] bytes2 = new byte[] { 0x7B, 0x22, 0x62, 0x61, 0x6C, 0x61, 0x6E, 0x63, 0x65, 0x22, 0x3A, 0x30, 0x2C, 0x22, 0x62, 0x6F }; for (int i = 0; i bytes2.Length; i++) Debug.Assert(bytes1[i] == bytes2[i]); } }
Ваш комментарий я не понял. Что Вы ввели в свой TextBox? Осмелюсь предположить, что Вы так и написали 0x50, 0x6F, 0x69. Так это не правильно. Нужно воспользоваться методом Split
Регистрация: 16.07.2012
Сообщений: 50
Сообщение от Петррр
Осмелюсь предположить, что Вы так и написали 0x50, 0x6F, 0x69
да, я так писал
Сообщение от Петррр
Нужно воспользоваться методом Split
можно немного подробнее?
6277 / 3562 / 898
Регистрация: 28.10.2010
Сообщений: 5,926
Сообщение было отмечено Памирыч как решение
Решение
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
using System; using System.Linq; class Program { static void Main(string[] args) { string str = "0x50, 0x6F, 0x69"; byte[] bytes = str.Split(',').Select(x => x.Trim()) .Select(x => Convert.ToByte(x, 16)) .ToArray(); for (int i = 0; i bytes.Length; i++) Console.Write("0x ", bytes[i].ToString("X")); Console.ReadKey(true); } }
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Как можно перевести System::String в char?
Добрый день, подскажите как можно перевести System::String в char да либо как взять 1 конкретный.
Подскажите пожалуйста, как можно перевести массив из real в string
Подскажите пожалуйста, как можно перевести массив из real в string. Я устественно перевожу str(a.
Перевести строку, содержащую данные массива байт (byte[]) в byte[]
Приветствую. Есть такая строка — "" Как её перевести в массив байт? 1. Допустим, что.
convert string of byte 2 byte array
Есть длиииный стринг ’00 05 0F 7B’ и тд и тп, нада все это дело запихать в байтный массив (чтобы.
Какой функцией можно преобразовать тип byte в тип string и наоборот?
Вот моя проблема, у меня конченое действие будет выводить число в 10 С.С и в типе byte, а мне надо.