第一种方法是:
-(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;
}
谢谢你的回答。看起来大字符变成了小字符。
最佳答案
hexStringToByte:
会将十六进制数字表示形式的字符串(示例 @"FF")转换为 Byte
值(在此示例中为 255)。
stringToAddBytes:
使用 hexStringToByte:
创建 NSData
字节,将 addString
分解为两个字母豌 bean 并将它们转换到 Byte
值。
换句话说,这就是字符串序列化。
示例:
// 255 = 0xFF
// 170 = 0xAA
// 136 = 0x88
NSString* addString = @"FFAA88";
NSData* data = [self stringToAddBytes:addString];
// data will be [255, 170, 136]
请注意 NSData
不是数组,而是代表原始对象。
关于ios - 谁能告诉我函数的影响是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32006994/