CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

如何将16进制字符串转换成普通字符串?

楼主qiao99(chq)2003-12-04 19:34:05 在 .NET技术 / C# 提问

如何将16进制字符串转换成普通字符串?  
   
  例如    
   
  string   s1   =   "B2DDD2B6"   //草叶的16进制字符串  
   
  return   "草叶" 问题点数:50、回复次数:5Top

1 楼saucer(思归)回复于 2003-12-04 20:26:18 得分 15

your   byte   order   is   wrong,   try  
   
  using   System.Text;  
   
  string   GetValue(string   sHex)  
  {  
      StringBuilder   sb   =   new   StringBuilder();  
      Encoding   enc   =   Encoding.GetEncoding("GB2312");  
      for(int   i=0;   i   <   sHex.Length   -   3;   i   +=4)  
      {  
  string   sub   =   sHex.Substring(i,4);  
   
  //byte   order   is   wrong,   need   to   do   a   switch  
  sub   =   sub.Substring(2,2)   +   sub.Substring(0,2);  
   
  int   c   =   int.Parse(sub,System.Globalization.NumberStyles.HexNumber);  
  byte[]   bs   =   BitConverter.GetBytes(c);  
   
  sb.Append(enc.GetString(bs));  
      }  
   
      return   sb.ToString();  
  }  
   
   
  Console.Write(GetValue("B2DDD2B6"));Top

2 楼lfkool(龙飞)回复于 2003-12-04 21:18:02 得分 0

学习Top

3 楼zt371(dudu)回复于 2003-12-04 21:56:06 得分 0

按照saucer(思归)   的方法,怎么得出来得只有一个字啊?Top

4 楼xiaha3(夏)回复于 2003-12-04 21:57:55 得分 35

一共4个字节应该是2个汗字  
  我的正确  
  public   string   check(string   s1)  
  {  
  Encoding   enc   =   Encoding.GetEncoding("GB2312");  
  char   c,d;  
  byte   a=0,b=0;  
   
  byte[]   bytes=new   byte[s1.Length   /2];  
  char[]   chars=new   char[s1.Length];  
  char[]   chars1=s1.ToCharArray   ();  
  for(int   i=0   ;i<chars1.Length   ;i=i+2)  
  {c=chars1[i];  
  d=chars1[i+1];  
  switch(   c)  
  {  
  case   'A':  
  a=(byte)10;  
  break;  
  case   'B':  
  a=(byte)11;  
  break;  
  case   'C':  
  a=(byte)12;  
  break;  
  case   'D':  
  a=(byte)13;  
  break;  
  case   'E':  
  a=(byte)14;  
  break;  
  case   'F':  
  a=(byte)15;  
  break;  
  default:  
  a=byte.Parse(chars1[i].ToString   ());  
  break;  
  }  
  switch(d)  
  {  
  case   'A':  
  b=(byte)10;  
  break;  
  case   'B':  
  b=(byte)11;  
  break;  
  case   'C':  
  b=(byte)12;  
  break;  
  case   'D':  
  b=(byte)13;  
  break;  
  case   'E':  
  b=(byte)14;  
  break;  
  case   'F':  
  b=(byte)15;  
  break;  
  default:  
  b=byte.Parse   (chars1[i+1].ToString   ());  
  break;  
  }  
   
  bytes[i/2]=(byte)(a*16+b);  
  }  
  string   s=enc.GetString(bytes);  
  int   co=s.Length   ;  
   
  return   s.ToString   ();  
  }  
  Top

5 楼FileNewExit((呵呵))回复于 2003-12-04 22:15:51 得分 0

saucer(思归)的代码会返回  
  草   叶    
   
  byte[]   bs   =   BitConverter.GetBytes(c);//bs[0]   =       0xB2  
                                                          //bs[1]   =       0xDD  
                                                          //bs[2]   =       0x0  
                                                          //bs[3]   =       0x0  
  byte[]   bs2   =   new   byte[]{bs[0],bs[1]};//加上这个就Ok了  
  sb.Append(enc.GetString(bs));Top

相关问题

  • 如何把二进制字符串转换为ASCII字符串??
  • 请问:如何将UTF-8字符串转换成普通字符串?
  • 关于强制转换成字符串
  • 16进制字符串如何转换成10进制字符串呢?
  • 怎么把字符串转换成16进制编码形式的字符串??
  • 字符串转换
  • 字符串转换
  • 字符串转换
  • 怎样将一个字符串转换成16进制数,又怎样转换回字符串?
  • 在线等,16进制转换成10进制数字符串

关键词

  • 转换
  • 普通
  • 普通字符串
  • 草叶
  • 进制字符串转换成
  • stringbuilder
  • encoding

得分解答快速导航

  • 帖主:qiao99
  • saucer
  • xiaha3

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo