从文本框输入获取十六进制数据的代码

来源:互联网 发布:剧本统计软件 编辑:程序博客网 时间:2024/06/05 16:26

 

  本段代码由 CocoaChina 会员“xwhbin”分享,可从文本框获取用户输入的内容,并转换为 16 进制数据

 

char singleNumberString[3] = {'/0','/0','/0'};
uint32_t singleNumber = 0;
uint32_t i = 0;

 NSMutableData *data = [NSMutableData data];
 //从文本框获取到得数据
 const char *buf = [[_hexToSendTextField text] UTF8String];
 //转换为十六进制
 for(i = 0; i < strlen(buf); i+=2)
 {
 if(((i+1) < len && isxdigit(buf) && (isxdigit(buf[i+1])))
 {
 singleNumberString[0] = buf;
 singleNumberString[1] = buf[i+1];
 sscanf(singleNumberString, "%x", &singleNumber);
 [data appendBytes:(void*)(&tmp) length:1];
 }
 else
 {
 break;
 }
 }
 //输出
 NSLog(@"%@", data);

//关于isxdigit函数

  isxdigit(测试字符是否为16进制数字)  相关函数  isalnum,isdigit  表头文件  #include<ctype.h>  定义函数  int isxdigit (int c)  函数说明  检查参数c是否为16进制数字,只要c为下列其中一个情况则返回TRUE。16进制数字:0123456789ABCDEF。  参数类型为int,但是可以直接将char 类型数据传入.  例如:isxdigit('a') 返回为1.  返回值  若参数c为16进制数字,则返回1,否则返回0。  附加说明  此为宏定义,非真正函数。  范例  /*找出字符串str中为十六进制数字的字符*/  #include <ctype.h>  #include <stdio.h>  int main()  {  char str[]="123c@#FDsP[e?";  int i;  for(i=0;str[i]!='/0';i++)  if(isxdigit(str[i])) printf("%c is a hexadecimal digits/n",str[i]);  }  执行  1 is a hexadecimal digits  2 is a hexadecimal digits  3 is a hexadecimal digits  c is a hexadecimal digits  F is a hexadecimal digits  D is a hexadecimal digits  e is a hexadecimal digits