Почему у меня есть дополнительные символы при копировании части массива без знака в Objective c
Я пытаюсь разделить массив без знака и поместить его в 3 переменных. Исходная переменная: 0000000300000008544368616d696568
Выход должен быть:
tag= **00000003**
length = **00000005**
value = **544368616d696568**
Чтобы получить тег и длину:
- (BOOL)decodeTag:(unsigned char*) data{
unsigned char *byteTag;
byteTag = [self CopyArray:byteTag :0 :data :0 :4*2];
NSString *s=[NSString stringWithUTF8String:(char *)byteTag];
NSString *dataAsString = [s substringWithRange:NSMakeRange(0, [s length])];
unsigned intData = 0;
NSScanner *scanner = [NSScanner scannerWithString:dataAsString];
[scanner scanHexInt:&intData];
int tag = intData;
self.tag = tag;
NSLog(@"decode tag %i", tag);
return true;
}
Чтобы получить значение:
- (BOOL)decodeValue:(unsigned char*) data{
unsigned char* value=(unsigned char *)calloc(self.length*2, sizeof(unsigned char));
value= [self CopyArrays:value :0 :data :8*2 : self.length *2];
self.value = value;
NSLog(@"data %s",data);
NSLog(@"value %s",value);
return true;
}
Чтобы скопировать часть массива unsigned char:
- (unsigned char*)CopyArrays:(unsigned char *) destination :(int) destIndex :(unsigned char *) source :(int) sourceIndexStart :(int) length{
for ( int i=0; i<length; i++){
destination[i+destIndex] = source[i+sourceIndexStart];
}
return destination;
}
Но в результате для значения переменной я получаю следующее:544368616d696568 \ 255 \ 276 \ 232zY \ 300 ݺ