2017-04-10 5 views
2

배열의 16 진수 값으로 문자열을 만들려고하지만 배열의 16 진수가 0으로 시작될 때마다 결과 문자열에서 사라집니다. 게다가.16 진수를 문자열로 변환하여 같은 자릿수로 유지

나는 String(value:radix:uppercase)을 사용하여 문자열을 만듭니다.


예 :

여기 배열이다 : [0x13245678, 0x12345678, 0x12345678, 0x12345678]. 나에게 문자열을 제공
: 12345678123456781234567812345678(32 자)

그러나 다음과 같은 배열 : [0x02345678, 0x12345678, 0x02345678, 0x12345678] (내가 제로 두 1 년대를 대체 통지). 나는 그것이 제로를 제거하는 이유는 확실하지 않다


234567812345678234567812345678(30 자) :
나에게 문자열을 제공합니다. 나는 가치가다는 것을 알고있다; 어떻게하면 제로를 유지하도록 포맷 할 수 있습니까?

답변

3

숫자 0x은 실제로는 단지 0x1234567입니다. 숫자 리터럴의 앞에 오는 0은 아무 것도 의미하지 않습니다 (8 진수 리터럴의 앞에 0을 사용하지 않는 한).

String(value:radix:uppercase) 대신에 String(format:)을 사용하십시오. 포맷의

let num = 0x1234567 
let str = String(format: "%08X", num) 

설명은 필요에 따라

  • 0는 패드 제로와 문자열의 좌측 끝을 의미한다.
  • 8은 결과가 8 자 길이가되도록하려는 것입니다.
  • X은 대문자 16 진수로 변환하려는 것을 의미합니다. 소문자 16 진수를 원하면 x을 사용하십시오.
+0

아, 훌륭합니다! 이걸 정확히 찾고 있었습니까. Apple의 문자열 형식 지정자를 발견했지만 필요한 '0'에 대해 알지 못했습니다. –

+0

하지만 String (형식 : _ :)은 String (_ : radix : uppercase :)이없는 곳에서 Foundation을 가져와야합니다. – Binarian