Почему у меня есть дополнительные символы при копировании части массива без знака в 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 ݺ

0 ответов

Другие вопросы по тегам