从文本框中获取值,该值是字节值并将其转换为C#中的字符串

时间:2017-09-06 11:42:49

标签: c#

我在文本框中的值是index.html,它是字节格式。如何将其转换为字符串格式?

简而言之,如果我在文本框中输入字节值,如何通过单击按钮将其转换为字符串?

2 个答案:

答案 0 :(得分:1)

提供字符串为Ascii,您可以尝试简单的 Linq 查询:

using System.Linq;

...

string source = "48 65 6C 6C 6F 20 77 6F 72 6c 64 21 00 00 00 00";

string result = new string(source
  .Split(' ')
  .Select(x => (char)Convert.ToInt32(x, 16))
  .ToArray());

测试

Console.Write(result); 

结果

Hello world!

答案 1 :(得分:0)

因此,您有一个字节数组,表示您想要变成字符串的ASCII代码。

像这样给出字节数组:

byte[] bytes = {0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x77, 0x6F, 0x72, 0x6c, 0x64, 0x21, 0x00, 0x00, 0x00, 0x00};

你可以把它变成这样的字符串:

string text = Encoding.ASCII.GetString(bytes);

如果我们打印出来,我们会发现文字是:

Hello world!

但请注意,它在字符串的末尾有4个ASCII NUL字符(源字节中的0值)。

另请注意,如果字节代表当前代码页中的ANSI代码,则使用:

string text = Encoding.Default.GetString(bytes);

如果它们代表UTF8字节,则使用:

string text = Encoding.UTF8.GetString(bytes);

要从十六进制值字符串转换为字节数组,您可以使用本主题中的其他答案之一,或者使用:

string hexBytes = "48 65 6C 6C 6F 20 77 6F 72 6c 64 21 00 00 00 00";
byte[] bytes = hexBytes.Split(' ').Select(hex => byte.Parse(hex, NumberStyles.HexNumber)).ToArray();

将这些全部放在一个可编辑的控制台应用程序中:

using System;
using System.Globalization;
using System.Linq;
using System.Text;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            string hexBytes = "48 65 6C 6C 6F 20 77 6F 72 6c 64 21 00 00 00 00";
            byte[] bytes = hexBytes.Split(' ').Select(hex => byte.Parse(hex, NumberStyles.HexNumber)).ToArray();
            string text = Encoding.ASCII.GetString(bytes);
            Console.WriteLine(text);
        }
    }
}