%02.2hhx
높은 투표 답변 에 대한 설명 :
%
: x
변환 지정자를 소개 합니다.
02
: 변환 된 값의 최소 너비는 2입니다. 변환 된 값의 필드 너비보다 바이트 수가 적은 0
경우 왼쪽에 채워집니다 .
.2
: x
변환 지정자 에 표시 할 최소 자릿수를 제공 합니다.
hh
: x
변환 지정자가 부호있는 char 또는 부호없는 char 인수에 적용되도록 지정합니다 (인수는 정수 승격에 따라 승격되지만 값은 인쇄하기 전에 부호있는 char 또는 부호없는 char로 변환됩니다).
x
: 부호없는 인수는 "dddd"스타일의 부호없는 16 진수 형식으로 변환됩니다. 문자 "abcdef"가 사용됩니다. 정밀도는 표시 할 최소 자릿수를 지정합니다. 변환되는 값을 더 적은 자릿수로 표시 할 수 있으면 앞에 오는 0으로 확장됩니다. 기본 정밀도는 1입니다. 명시 적 정밀도 0으로 0을 변환 한 결과는 문자가 아닙니다.
자세한 내용은 IEEE printf 사양을 참조하십시오 .
위의 설명을 바탕으로, 나는 변화에 더 나은 생각 %02.2hhx
을 %02x
하거나 %.2x
.
Swift 5의 경우 다음 방법을 모두 사용할 수 있습니다.
deviceToken.map({String(format: "%02x", $0)}).joined()
deviceToken.map({String(format: "%.2x", $0)}).joined()
deviceToken.reduce("", {$0 + String(format: "%02x", $1)})
deviceToken.reduce("", {$0 + String(format: "%.2x", $1)})
테스트는 다음과 같습니다.
let deviceToken = (0..<32).reduce(Data(), {$0 + [$1]})
print(deviceToken.reduce("", {$0 + String(format: "%.2x", $1)}))
// Print content:
// 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
NSLog
, 인쇄 그 하나newDeviceToken
?