我的 NSString 看起来像这样:
42949672951365185178
它是 32 位数字4294967295
和时间戳的串联1365185178
。
我需要将两者分开,以便我可以分别获取数字和时间戳。我所知道的是前 32 位是“数字”部分,其余的是时间戳。
这是我尝试过的:
NSString *step9String = @"42949672951365185178";
NSData *step10uAndTS = [step9String dataUsingEncoding:NSASCIIStringEncoding];
NSRange uidRange = NSMakeRange(0, 4); // 4 bytes
UInt8 uidBytes[uidRange.length];
[step10uAndTS getBytes:&uidBytes range:uidRange];
NSData *uidData = [NSData dataWithBytes:uidBytes length:sizeof(uidBytes)];
NSString *uid = [[NSString alloc] initWithData:uidData encoding:NSASCIIStringEncoding];
// and the rest should be the timestamp
NSRange tsRange = NSMakeRange(4, step10uAndTS.length-4);
UInt8 tsBytes[tsRange.length];
[step10uAndTS getBytes:&tsBytes range:tsRange];
NSData *tsData = [NSData dataWithBytes:tsBytes length:sizeof(tsBytes)];
NSString *ts = [[NSString alloc] initWithData:tsData encoding:NSASCIIStringEncoding];
NSLog(@"UID: %@, TS: %@", uid, ts);
但是我得到了这个输出:
UID:4294,TS:9672951365185466
不知道这里出了什么问题,或者如何以不同的方式做。如果有人能解释我做错了什么以及如何补救,我将不胜感激。
谢谢