好的,我正在努力将一些客观的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。所以我修好了帖子。
答案 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];
第一部分生成一个字符串。 NSTimeInterval
已typedef
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)
对于“%。0f”,您可以阅读Apple的文档(对于任何对象,它只是ANSI C的printf
格式加上%@):
至于dataUsingEncoding:NSTimeInterval
,我不认为原始的Objective-C代码是正确的。 NSString
dataUsingEncoding:
方法的签名是这样的:
- (NSData *)dataUsingEncoding:(NSStringEncoding)encoding
此处定义encoding
的可能值:String Encodings,将NSTimeInterval
作为NSStringEncoding
传递,此处无效。