私の NSString は次のようになります。
42949672951365185178
これは、32 ビットの数値4294967295
とタイムスタンプを連結したもの1365185178
です。
数字とタイムスタンプを別々に取得できるように、2 つを分割する必要があります。私が知っているのは、最初の 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
ここで何が間違っているのか、または別の方法で行う方法がわかりません。誰かが私が間違っていることとその修正方法を説明できれば、とても感謝しています.
ありがとう