-
Notifications
You must be signed in to change notification settings - Fork 0
/
TLVParser.m
46 lines (34 loc) · 1.52 KB
/
TLVParser.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
//
// TLVParser.m
// QPay
//
// Created by Mac on 12/4/18.
// Copyright © 2018 transthru. All rights reserved.
//
#import "TLVParser.h"
@implementation TLVParser
+ (NSMutableDictionary*) parseTLV: (NSString *) tlvString{
//Stores NSString as character array
NSMutableArray *tlvCharacterArray = [NSMutableArray array];
//Converts NSString to character array and stores in tlvCharacterArray
for (int i = 0; i < [tlvString length]; i++) {
[tlvCharacterArray addObject:[NSString stringWithFormat:@"%C", [tlvString characterAtIndex:i]]];
}
//Intialize a dictionary to store TLV as dictionary
NSMutableDictionary *tagAndValue = [[NSMutableDictionary alloc] init];
for (int i = 0; i < [tlvCharacterArray count];){
if (i + 4 < [tlvCharacterArray count]){
NSString* tag = [NSString stringWithFormat:@"%@%@", tlvCharacterArray[i], tlvCharacterArray[i + 1]];
NSString* value = [NSString stringWithFormat:@"%@%@", tlvCharacterArray[i + 2], tlvCharacterArray[i + 3]];
int valueLength = [value intValue];
NSMutableArray *valueArray = [NSMutableArray array];
for (int j = i + 4; j < i + 4 + valueLength; j++){
[valueArray addObject:[NSString stringWithFormat:@"%C", [tlvString characterAtIndex:j]]];
}
[tagAndValue setObject:[valueArray componentsJoinedByString:@""] forKey:tag];
i += 4 + valueLength;
}
}
return tagAndValue;
}
@end