从二进制到UTF-16文本,反之亦然

时间:2012-03-18 08:46:07

标签: c# asp.net vb.net

我想将十六进制二进制转换为UTF-16

就像这个网站上的转换器一样 http://sms.24cro.com/op_1_4_en.htm

注意:我不是从文件中读取二进制文件,它是以查询字符串形式出现在我的网站上

示例输入:

06270646062700200627062d06280640064006400640064006400640064006400640064006400640064006400643

2 个答案:

答案 0 :(得分:1)

这里有几个步骤:

  • 将十六进制字符串转换为byte[]
  • byte[]转换为字符串

其中第二项是微不足道的,例如:

byte[] blob = ...
string s = Encoding.Unicode.GetString(blob);

那么第一个怎么样?每对都是一个字节,所以:

byte[] blob = new byte[input.Length / 2];

对于每一对,我们需要转换一个字节:

for(int i = 0; i < blob.Length ; i++) {
    string pair = input.Substring(2 * i, 2);
    blob[i] = Convert.ToByte(pair, 16); // from hex to byte
}

所以把它们放在一起:

byte[] blob = new byte[input.Length / 2];
for(int i = 0; i < blob.Length ; i++) {
    string pair = input.Substring(2 * i, 2);
    blob[i] = Convert.ToByte(pair, 16); // from hex to byte
}
string s = Encoding.Unicode.GetString(blob);

答案 1 :(得分:-1)

请找到将十六进制转换为阿拉伯语的代码。

byte[] blob = new byte[text1.Text.Length / 2];
for (int i = 0; i < blob.Length; i++)
{
    string pair = text1.Text.Substring(2 * i, 2);
    blob[i] = Convert.ToByte(pair,16); // from hex to byte 
}
string s;//
s = Encoding.BigEndianUnicode.GetString(blob);
Label3.Text = s;