十六进制串,怎么传化成字符>>带汉字

lsgis2001 2015-05-10 01:39:50
以下代码,如果在C#下面完成?


这里是VB.NET代码.


Dim sStr As String

sStr = "E065344E8A5E0F61494E9798927C220020004C004E003D002200E065344E8A5E0F61494E9798927C22002000410046003D0022003000220020004E0052003D002200390039003900390039003900390039002000"

Dim sl_data As String
Dim sr_data As String
Dim sResult As String
sResult = ""
Dim i As Integer
For i = 0 To sStr.Length / 4 - 1 Step 4

sl_data = sStr.Substring(i + 2, 2)
sr_data = sStr.Substring(i, 2)

sResult = sResult + ChrW("&H" + sl_data + sr_data)

Next
Debug.Print(sResult)



输出结算如下:
无临床意义颗粒" LN


以下是VB6代码,


Dim sStr As String
sStr = "E065344E8A5E0F61494E9798927C220020004C004E003D002200E065344E8A5E0F61494E9798927C22002000410046003D0022003000220020004E0052003D002200390039003900390039003900390039002000"

debug.print HexToStr(sStr)

Public Function HexToStr(sHex As String) As String
Dim sl_d As String
Dim sr_d As String
Dim i As Integer

Dim sReturn As String
Dim sStr As String
sStr = sHex
For i = 0 To Len(sStr) / 2 - 1
sl_d = Mid(sStr, i + 2 + 1, 2)
rl_d = Mid(sStr, i + 1, 2)
i = i + 3
Debug.Print sl_d & rl_d; "=" + ChrW("&H" & sl_d & rl_d)

sReturn = sReturn & ChrW("&H" & sl_d & rl_d)

Next
HexToStr = sReturn
End Function



用以上VB代码,可以得到这种结果:
65E0=无
4E34=临
5E8A=床
610F=意
4E49=义
9897=颗
7C92=粒
0022="
0020=
004C=L
004E=N
003D==
0022="
65E0=无
4E34=临
5E8A=床
610F=意
4E49=义
9897=颗
7C92=粒
0022="
无临床意义颗粒" LN="无临床意义颗粒"
...全文
142 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2015-05-10
  • 打赏
  • 举报
回复

            var str = "e065344e8a5e0f61494e9798927c220020004c004e00";
            byte[] byteArray = new byte[str.Length / 2];
            for (int i = 0, k = 0; i < str.Length; i += 2, k++)
            {
                byteArray[k] = (byte)Convert.ToInt16(str.Substring(i, 2), 16);
            }
            Encoding gb = Encoding.GetEncoding("utf-16");  
            Console.WriteLine(gb.GetString(byteArray));
无临床意义颗粒" LN
x8bits 2015-05-10
  • 打赏
  • 举报
回复
void Main()
{
	string sStr = "E065344E8A5E0F61494E9798927C220020004C004E003D002200E065344E8A5E0F61494E9798927C22002000410046003D0022003000220020004E0052003D002200390039003900390039003900390039002000";
	byte[] bytes = ConvertHexStringToByteArray(sStr);
	string result = System.Text.Encoding.Unicode.GetString(bytes);
	Console.WriteLine(result);
}

public static byte[] ConvertHexStringToByteArray(string hexString)
{
    if (hexString.Length % 2 != 0)
    {
        throw new ArgumentException(String.Format(System.Globalization.CultureInfo.InvariantCulture, "The binary key cannot have an odd number of digits: {0}", hexString));
    }

    byte[] hexAsBytes = new byte[hexString.Length / 2];
    for (int index = 0; index < hexAsBytes.Length; index++)
    {
        string byteValue = hexString.Substring(index * 2, 2);
        hexAsBytes[index] = byte.Parse(byteValue, System.Globalization.NumberStyles.HexNumber, System.Globalization.CultureInfo.InvariantCulture);
    }

    return hexAsBytes; 
}
无临床意义颗粒" LN="无临床意义颗粒" AF="0" NR="99999999
  • 打赏
  • 举报
回复
看着像GB2312
byte[] byteArray = new byte[] { (byte)rdUpperValue, (byte)rdLowValue };  
Encoding gb = Encoding.GetEncoding("gb2312");  
gb.GetString(byteArray)

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧