我在文本框中的值是index.html
,它是字节格式。如何将其转换为字符串格式?
简而言之,如果我在文本框中输入字节值,如何通过单击按钮将其转换为字符串?
答案 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);
}
}
}