2012-12-14 2 views
0

좋아, 나는 객관적인 C 코드를 C#으로 변환하려고 노력하고있다.객관적인 c 메서드를 C#으로 변환 stringWithFormat : @ "% @ %. 0f % @"

var authTime = GetTimeIntervalSince1970(DateTime.Now); 

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

그래서, 내 질문은 "%의 .0f"및 "NSTimeInterval dataUsingEncoding"입니다 : 나는 도우미 클래스를 생성하고 난이이 정도

NSTimeInterval now = [[NSDate date] timeIntervalSince1970]; 


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

. 첫 번째 부분은 "지금"매개 변수의 형식을 지정하는 것과 관련이 있습니다. C#에서 동일한 작업을 수행하기 위해 수행해야 할 작업은 무엇인가요? 누군가 나를 자세히 설명하거나 나를 직접 지시 할 수 있습니까? 기사/블로그를 읽어야합니까?

감사합니다.

업데이트 : 오케이, 나는 혼란 스러웠다. dataUsingEncoding : NSTimeInterval은 dataUsingEncoding : NSUTF8StringEncoding을 읽어야합니다. 그래서 나는 그 소식을 고쳤다.

+1

예상되는 출력은 얼마나됩니까? –

+1

'dataUsingEncoding : NSTimeInterval'이 화면에 오류를 발생시키지 않습니까? –

+0

'% @'포맷팅 코드는 Objective-C 객체를 표시합니다. NSStrings 그냥 문자열 문자를 인쇄합니다. '% .0f' 코드는 (지수가 아닌 형식으로) 부동 소수점 숫자를 포맷하는 것입니다. 형식은 숫자가 소수 부분없이 인쇄된다는 것을 나타냅니다. –

답변

1

하여 오브젝티브 C 코드의 두 번째 라인은 두 부분으로 구성

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

NSData *formattedstring = [tmp dataUsingEncoding:NSTimeInterval]; 

첫번째 부분 문자열을 생성한다. NSTimeIntervaldouble에 대한 typedef이므로, %.0f은 기본적으로 now의 플로어를 구성합니다 (예 : 3.1415926에서 @"3"까지). 그래서, 부동 수 귀하의 GetTimeIntervalSince1970 수익률을 가정, C#에서하는 것과 동일합니다

string tmp = string.Format("{0}{1:F0}{2}", username, authTime, password); 

두 번째 부분은, 그러나, 혼란이다. dataUsingEncoding:NSStringEncoding 인수를 취하지 만 NSTimeInterval이 아니고이 아니며 built-in constants 중 하나입니다. 실제로는 NSTimeIntervaltypedef이기 때문에 컴파일하지 않아야하며 (암시 적으로) 정수로 변환 할 수 없습니다. 나는 NSData이 C#에서 System.Byte[]과 대략 동일하다고 생각하지만 문자열을 변환해야하는지 여부는 필요에 따라 다릅니다.

은 "%의 .0f"를
+0

안녕하세요, 빠른 답변에 감사드립니다. 아주 잘 설명되었습니다. : D 나는 당신과 모든 사람들의 도움으로 지금 알아 냈다고 생각합니다. – user1535485

1
var authDataString = String.Format("{0}{1:F0}{2}",username, authTime, password); 
0
  1. , 당신은 (그것은 개체만을위한 ANSI C의 printf 형식 플러스 % @의) 애플의 문서를 읽을 수 있습니다

  2. dataUsingEncoding:NSTimeInterval, 원래 Objective-C 코드가 맞다고 생각하지 않습니다.NSStringdataUsingEncoding: 메소드의 서명은 다음과 같이이다 : encoding에 대한

    - (NSData *)dataUsingEncoding:(NSStringEncoding)encoding

    가능한 값은 여기에 정의되어 있습니다 String Encodings를, 여기에 이해되지 않는다 NSTimeIntervalNSStringEncoding로 전달합니다.