Специальный символ .NET C #

#c# #.net #character

#c# #.net #символ

Вопрос:

У меня есть приложение на C #, в котором я пытаюсь создать строку, которая будет содержать около конца . Мне не удалось этого сделать.
Я сделал:

 string msg = "GGGG..8";  
byte []b = System.Text.encoding.GetBytes(msg);
  

но в b, где «..» — это представление, равно 46, а не 00.
Я хочу, чтобы вместо ..
Конечная цель состояла в том, чтобы строка содержала сообщение.

Комментарии:

1. Ваш код не будет компилироваться как «System.Text.encoding. getBytes(msg)» недопустимо. Какую кодировку вы используете?

Ответ №1:

Создать соответствующую строку очень просто:

 string msg = "GGGG8";
  

Неясно, какую кодировку вы пытались использовать во второй строке, но я бы ожидал, что большинство однобайтовых кодировок будут кодировать это ‘ 0’ как 0 байт.

Если вы хотите взять сообщение, которое изначально содержит точки, и преобразовать их в символы ‘ 0’, это тоже просто:

 string msg = "GGGG..8";
string replaced = msg.Replace('.', '');
  

Комментарии:

1. Спасибо, я так плох в этом вопросе символов и преобразования и ascii. Знаете ли вы хорошую ссылку, чтобы понять это?

2. Неясно, что именно вас интересует. Моя статья о строках может помочь: csharpindepth.com/Articles/General/Strings.aspx

3. Спасибо за статью, я улучшаю при использовании unicode при преобразовании? когда он представлен в UTF7 или 8 и т.д..

4. @RomanDorevich: Что вы подразумеваете под «преобразованием»? точно? Это сложно — вам нужно быть более точным в своей терминологии, прежде чем я смогу точно ответить на ваши вопросы, но пока вы не разберетесь в предмете немного лучше, вы не сможете быть более точным в своей терминологии… надеюсь, моя статья немного прояснит ситуацию.

5. @jon я прочитал вашу статью, но string s="1" также хранится в виде 16 бит unicode? 8 бит подходит для этого случая…. вы сказали, что у него есть флаг, который может определить, содержит ли строка символы, отличные от ascii … ну… это не тот случай, когда его символ ascii. какого размера он будет в памяти? (байты)

Ответ №2:

Это должно сработать:

 string msg = "GGGG..8";
  

Если не повезло, попробуйте это:

 string msg = "GGGG..8"   '';
  

Комментарии:

1. Извините, я хотел вместо ..

2. Я думаю, что «в конце» в данном случае означает «в конечном итоге», а не «в конце строки».

3. Да, но я также написал, что он дублируется и сделал пример, но я его изменю

4. Хороший улов @Jon и, как обычно, ваш ответ не может быть превзойден. 🙂