Как преобразовать byte в string
Перейти к содержимому

Как преобразовать byte в string

  • автор:

Преобразование массива байтов в строку в 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); 
  1. Можно ли получить по сокету размер получаемого сообщения?
  2. Если нельзя, то как определить конец полученого сообщения?

Отслеживать

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, а мне надо.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *