CString str = "0F-AA-58-27-FF-EF" (MAC地址)
BYTE a[6]; 
 
我想我str的mac地址存在 a  中, 
是 a[0] = 0F;
   a[1] = AA
    ;; 
    ;; 
   a[5] = EF
敬请各位高手帮助! 
小弟在此先行谢过拉!

解决方案 »

  1.   

    把"0"转成 0x0,“F”转成 0xF 应该会吧?然后移位再与就可以了
      

  2.   

    to DryFisHH(干鱼)   
    谢谢你! 我知道怎样一位一位做,那样我可以多乘16就可以的! 不知道您有没有更简单的!呵呵! 
     
    谢谢!
      

  3.   

    将16进制的字串转到 a 数组中CString str = "0F-AA-58-27-FF-EF";
    BYTE a[6];
    sscanf(str, "%x-%x-%x-%x-%x-%x", &a[0], &a[1], a[2], &a[3], &a[4], a[5]);
      

  4.   

    你这样试验一下:
    CString str = "0F-AA-58-27-FF-EF" (MAC地址)
    BYTE a[6]; 
    int i= str.GetLenth();
    for(int j=0;j<i;j++)
    {
      a[j]=str[j];
    }
    a[i]=0;
    就应该可以了。我经常这样转换。
    看看可以吗?不可以回信
     
      

  5.   

    对了,你那个数组可以设置的大一些,不能正好是6,我建议设置为大于6。如果等于六的话
    会有一个问题,那就是你不好判断这个数组的结尾。可能出现越界错误。所以可以进行修改如下:
    CString str = "0F-AA-58-27-FF-EF" (MAC地址)
    BYTE a[7]; 
    int i= str.GetLenth();
    for(int j=0;j<i;j++)
    {
      a[j]=str[j];
    }
    a[i]=0;
      

  6.   

    谢谢各位高手的指点阿! 
    我由于急于作东西。我就用最简单可有繁琐的方法! 
    一个一个取出字符。
    BYTE mac[6] 
    for(int i = 0 ; i < 6 ;i++)
    {
       for(int j = 0 ; j < 2 ,J++)
       {
            get(字符1);
            change(%X1);
            get(字符2);
            change(%X2);
            mac[i]= x1*16 + x2
     
            
       }

    呵呵!谢谢大家的指点!本人最近也在做文件驱动,有兴趣的共同研究阿!
      

  7.   

    to: SoLike(思危)
        zhiyong1822(zhiyong)
        Stefine(混来D五个裤叉,反思&努力ing) 
    谢谢您们那!希望以后大家都是朋友!能向各位学习到更多东西。
    to zhiyong1822(zhiyong): 
      你的代码把BYTE的一个字节的高位浪费拉! 
      a[0] = 0F(你的应该是a[0]=0,a[1]=F)
      

  8.   

    LPBYTE lpb = new BYTE[str.GetLength() +1];
    for(int i = 0; i < str.GetLength(); i ++)
    {
    lpb[i] = str[i];}
    lpb[str.Length()] = 0;