菜鸟拜求:如何将内容为\"1B”的NSString数据,转换成0x1B,并赋值给unsigned char对象?我建立一个UITextField对象,在里面输入16进制的数据\"1B 76\".
想要将输入的16进制数读取出来,保存成unsigned char类型。既需要实现:
输入:uiTextField.text = \"1B 76\";输出:unsigned char dest[2];
dest[0] = 0x1B;
dest[1] = 0x76;O(∩_∩)O哈哈~拜谢----- 

解决方案 »

  1.   

    一个char一个char的转,拆成子串,然后分别转成int类型
      

  2.   

    dest[0] = 0x1B;
    dest[1] = 0x76;
    你是要在这里面保存成16进制?   这可以吗?????
    至于输入的16进制的字符串,你可以自己写个算法来转换成10进制啊,这个不难,会点计算机基础的都能写.然后你就把转换出来的数值保存到数组里面.然后你要显示的时候再转换成十六进制就ok了啊
      

  3.   


        NSString * textString = @"1B762b76";
        NSLog(@"%@",textString);
        
        int len = textString.length;
        int i = 0;
        unsigned char * dest = (unsigned char*)malloc(len);
        memset(dest, 0, len);
        NSRange range;
        range.length = 2;
        unsigned char * destTemp = dest;
        while (i<len)
        {
            range.location = i;
            *destTemp++ = (char)zh((char*)[[textString substringWithRange:range] UTF8String]);
            i += 2;
        }
        NSLog(@"%s", dest);
        free(dest);
    // 16进制字符串转换为10进制整数
    int zh(char str[])
    {
        int i,n;
        int value = 0;
        int len =strlen(str);
        for( i=0; i<len;i++)
        {
            if(str[i]>='A'&&str[i]<='F')
                n=str[i]-'A'+10;
            else if(str[i]>='a'&&str[i]<='f')
                n=str[i]-'a'+10;
            else n=str[i]-'0';
            value=value*16+n;
        }
        NSLog(@"%d",value);
        return value;
    }