zoukankan      html  css  js  c++  java
  • 16进制字符串转数字(C/C++,VB/VB.net,C#)

    这个问题看是很简单,但是在不同语言中实现的方式却千差万别,如果不知道方法,还真是麻烦,我就是在C#中遇到该问题,让我费了很大的周折,才在msdn查到。
    一、16进制字符串转数字
         1C/C++
               I、最简单的办法:sscanf(“12AB”,,”%x”,&lngHex);   //字符也可以为”0x12AB”
          II、有个朋友,自行编写函数实现了该功能,据说速度比sscanf快:
          BOOL   HexToDec(   LPCTSTR   shex,int&   idec   )   
         {   
          int   i,mid;   
          int   len   =   lstrlen(   shex   );       
          if(   len>8   )     return   FALSE;      
          mid   =   0;   idec   =   0;   
          for(   i=0;i<len;i++   )   
          {   
              if(   shex[i]>='0'&&shex[i]<='9'   )   mid   =   shex[i]-'0';   
              else   if(   shex[i]>='a'&&shex[i]<='f'   )   mid   =   shex[i]   -'a'   +10;   
              else   if(   shex[i]>='A'&&shex[i]<='F'   )   mid   =   shex[i]   -'A'   +10;   
              else   return   FALSE;       
              mid   <<=   ((len-i-1)<<2);   
              idec   |=   mid;       
          }       
          return   TRUE;   
       }  
       2VB
       LngHex=val(“&H12AB”)
     3VB.net
    LngHex=val(“&H12AB”)
     4C#
         lngHex=Convert.ToInt32(“0x12AB”,16);   //也可以直接写12AB
       Msdn上有一个条目:“如何:将十六进制字符串转换为数字”
       使用ToInt32,第一个参数为要转换的字符串,第二个参数表示数字的基数,十六进制为16
       此外不仅支持16进制,2810进制都支持 
     
    二、数字转16进制字符串
    1C/C++
    Printf(“%x”,1234);
    2VB
    Hex(1234)
    3VB.net
    Hex(1234)
    Int(1234).ToString(“X4”)
    4C#
    ((int)1234).ToString(“X4”);
  • 相关阅读:
    Codeforces Round #452 F. Letters Removing
    bzoj 1492: [NOI2007]货币兑换Cash
    bzoj 4016: [FJOI2014]最短路径树问题
    bzoj 2109: [Noi2010]Plane 航空管制
    bzoj 1058: [ZJOI2007]报表统计
    bzoj 1016: [JSOI2008]最小生成树计数
    bzoj 1013: [JSOI2008]球形空间产生器sphere
    bzoj 1758: [Wc2010]重建计划
    bzoj 2337: [HNOI2011]XOR和路径
    一本通1668取石子
  • 原文地址:https://www.cnblogs.com/lidabo/p/3553133.html
Copyright © 2011-2022 走看看