第一种方法是:
-(NSData *)stringToAddBytes:(NSString*)addString
{
int length = (int)[addString length];
if(length < 2)
{
return nil;
}
Byte buf[length / 2];
for(int i = 0 ;i < length/2 ;i++)
{
NSString *str = [addString substringWithRange:NSMakeRange(i * 2, 2)];
Byte b = [self hexStringToByte:str];
buf[i]=b;
}
NSData * myD = [[NSData alloc]initWithBytes:buf length:length/2];
return myD;
}
第一种方法叫做的方法。
-(Byte)hexStringToByte:(NSString*)str
{
NSArray *charArray = [[NSArray alloc]initWithObjects:@"0",@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",
@"A",@"B",@"C",@"D",@"E",@"F",nil];
NSString *str1 = [str substringWithRange:NSMakeRange(0, 1)];
int num1 = (int)[charArray indexOfObject:str1];
NSString *str2 = [str substringWithRange:NSMakeRange(1, 1)];
int num2 = (int)[charArray indexOfObject:str2];
Byte b = num1*16+num2;
return b;
}
感谢您的回答。看起来将大字符更改为小字符。
答案 0 :(得分:2)
hexStringToByte:
将使用十六进制数字表示形式的字符串(例如@&#34; FF&#34;)转换为Byte
值(在此示例中为255)。
stringToAddBytes:
使用hexStringToByte:
创建NSData
字节,将addString
分为两个字母,并将其转换为Byte
值。
换句话说,这是字符串序列化。
示例:强>
// 255 = 0xFF
// 170 = 0xAA
// 136 = 0x88
NSString* addString = @"FFAA88";
NSData* data = [self stringToAddBytes:addString];
// data will be [255, 170, 136]
请注意NSData
不是数组,而是表示原始对象。