将目标c方法转换为c#stringWithFormat:@“%@%。0f%@”

时间:2012-12-14 17:22:58

标签: c# objective-c nstimeinterval stringwithformat

好的,我正在努力将一些客观的c代码转换为c#,这就是我所拥有的。

NSTimeInterval now = [[NSDate date] timeIntervalSince1970];


NSData * formattedstring= [[NSString stringWithFormat:@"%@%.0f%@", string1, now, string2] dataUsingEncoding:NSUTF8StringEncoding];

因为我已经创建了一个帮助类,我有这个:

var authTime = GetTimeIntervalSince1970(DateTime.Now);

var authDataString = String.Format("{0}{1}{2]",username, authTime, password);

所以,我的问题是“%。0f”和“dataUsingEncoding:NSTimeInterval”。我知道第一部分与格式化“现在”参数有关,我需要做些什么来确保我在c#中做同样的事情,并且有人可以向我详细解释这个或者指导我文章/博客我应该读?

谢谢!

更新:好吧我们搞砸了,我很抱歉我复制并粘贴了错误,这是我迷茫的一方。 dataUsingEncoding:NSTimeInterval应为:dataUsingEncoding:NSUTF8StringEncoding。所以我修好了帖子。

3 个答案:

答案 0 :(得分:1)

var authDataString = String.Format("{0}{1:F0}{2}",username, authTime, password);

答案 1 :(得分:1)

Objective-C代码的第二行包含两部分:

NSString *tmp = [NSString stringWithFormat:@"%@%.0f%@", string1, now, string2];

NSData *formattedstring = [tmp dataUsingEncoding:NSTimeInterval];

第一部分生成一个字符串。 NSTimeIntervaltypedef double %.0f now 3.1415926 @"3" GetTimeIntervalSince1970 string tmp = string.Format("{0}{1:F0}{2}", username, authTime, password); dataUsingEncoding: NSStringEncoding NSTimeInterval NSTimeInterval 。因此,假设您的typedef返回一个浮动数字,C#中的等价物是

NSData

然而,第二部分令人困惑。 System.Byte[]引用了{{1}}个参数,但{{1}} 不是其中一个可用的built-in constants。事实上,这很可能甚至不应该编译,因为{{1}}是{{1}},并且不能(隐式)转换为整数。我认为{{1}}大致相当于C#中的{{1}},但是否需要转换字符串取决于您的具体需求。

答案 2 :(得分:0)

  1. 对于“%。0f”,您可以阅读Apple的文档(对于任何对象,它只是ANSI C的printf格式加上%@):

  2. 至于dataUsingEncoding:NSTimeInterval,我不认为原始的Objective-C代码是正确的。 NSString dataUsingEncoding:方法的签名是这样的:

    - (NSData *)dataUsingEncoding:(NSStringEncoding)encoding

    此处定义encoding的可能值:String Encodings,将NSTimeInterval作为NSStringEncoding传递,此处无效。