Swift에서 Int를 16진수 문자열로 변환하는 방법
Obj-C에서 부호 없는 정수 n을 다음과 같은 16진수 문자열로 변환하는 데 사용됩니다.
NSString *st = [NSString stringWithFormat:@"%2X", n];
저는 이것을 스위프트 언어로 번역하기 위해 오랫동안 노력했지만 실패했습니다.
이제 다음을 수행할 수 있습니다.
let n = 14
var st = String(format:"%02X", n)
st += " is the hexadecimal representation of \(n)"
print(st)
0E is the hexadecimal representation of 14
참고: The2
이 예에서는 필드 너비이며 원하는 최소 길이를 나타냅니다.0
리드로 결과를 기록하도록 지시합니다.0
필요한 경우입니다. (필요하지 않은 경우.0
결과는 선행 공백으로 채워집니다.)물론 결과가 두 문자보다 클 경우 필드 길이가 다음 너비로 잘리지 않습니다.2
전체 결과를 표시하는 데 필요한 길이로 확장됩니다.
이 기능은 다음이 있는 경우에만 작동합니다.Foundation
가져오기(가져오기 포함)Cocoa
또는UIKit
) iOS 또는 MacOS 프로그래밍을 하는 경우에는 문제가 없습니다.
대문자 사용X
네가 원한다면A...F
소문자x
네가 원한다면a...f
:
String(format: "%x %X", 64206, 64206) // "face FACE"
다음보다 큰 정수 값을 인쇄하려면UInt32.max
,더하다ll
(el-el, 11이 아닌) 형식 문자열:
let n = UInt64.max
print(String(format: "%llX is hexadecimal for \(n)", n))
FFFFFFFFFFFFFFFF is hexadecimal for 18446744073709551615
원답
여전히 사용할 수 있습니다.NSString
이를 위해.형식은 다음과 같습니다.
var st = NSString(format:"%2X", n)
이것은 만듭니다.st
하나의NSString
그래서 다음과 같은 것들.+=
작동하지 않습니다.문자열에 다음을 추가할 수 있는 경우+=
만들다st
의 상태가.String
다음과 같이:
var st = NSString(format:"%2X", n) as String
또는
var st = String(NSString(format:"%2X", n))
또는
var st: String = NSString(format:"%2X", n)
그러면 다음을 수행할 수 있습니다.
let n = 123
var st = NSString(format:"%2X", n) as String
st += " is the hexadecimal representation of \(n)"
// "7B is the hexadecimal representation of 123"
Swift에는 특정한 것이 있습니다.init
에 대한 방법.String
정확히 이것에 대해:
let hex = String(0xF, radix: 16, uppercase: false)
println("hex=\(hex)") // Output: f
Swift 5를 사용하면 필요에 따라 다음 세 가지 방법 중 하나를 선택하여 문제를 해결할 수 있습니다.
#1. 사용하기String
의init(_:radix:uppercase:)
이니셜라이저
스위프트String
에는 다음 선언을 가진 이니셜라이저가 있습니다.
init<T>(_ value: T, radix: Int = 10, uppercase: Bool = false) where T : BinaryInteger
기준 10 또는 다른 지정된 기준에서 지정된 값을 나타내는 문자열을 만듭니다.
아래의 Playground 코드는 다음을 만드는 방법을 보여줍니다.String
다음을 사용하여 16진수 형식으로 정수 값을 나타내는 인스턴스init(_:radix:uppercase:)
그리고 수입할 필요 없이.Foundation
:
let string1 = String(2, radix: 16)
print(string1) // prints: "2"
let string2 = String(211, radix: 16)
print(string2) // prints: "d3"
let string3 = String(211, radix: 16, uppercase: true)
print(string3) // prints: "D3"
#2. 사용하기String
의init(format:_:)
이니셜라이저
Foundation
제공합니다.String
이니셜라이저init(format:_:)
에는 다음과 같은 선언이 있습니다.
init(format: String, _ arguments: CVarArg...)
를 반환합니다.
String
나머지 인수 값이 대체되는 템플릿으로 지정된 형식 문자열을 사용하여 초기화된 개체입니다.
Apple의 String Programming Guide는 지원되는 형식 지정자 목록을 제공합니다.String
그리고.NSString
형식 지정자 중에서%X
설명은 다음과 같습니다.
없는 정수부호비없 32트정수는정(수▁(▁uns트부비-▁32igned▁32
unsigned int
됩니다.
는 아의래코다만음방보드다여니줍법을는드을는을 .String
입니다.init(format:_:)
:
import Foundation
let string1 = String(format:"%X", 2)
print(string1) // prints: "2"
let string2 = String(format:"%02X", 1)
print(string2) // prints: "01"
let string3 = String(format:"%02X", 211)
print(string3) // prints: "D3"
let string4 = String(format: "%02X, %02X, %02X", 12, 121, 255)
print(string4) // prints: "0C, 79, FF"
#3. 사용하기String
의init(format:arguments:)
Foundation
에는 을(를) 제공합니다.String
이니셜라이저init(format:arguments:)
에는 다음과 같은 선언이 있습니다.
init(format: String, arguments: [CVarArg])
를 반환합니다.
String
사용자의 기본 로케일에 따라 나머지 인수 값이 대체되는 템플릿으로 지정된 형식 문자열을 사용하여 초기화된 개체입니다.
는 아의래코다만음방보드다여니줍법을는드을는을 .String
입니다.init(format:arguments:)
:
import Foundation
let string1 = String(format:"%X", arguments: [2])
print(string1) // prints: "2"
let string2 = String(format:"%02X", arguments: [1])
print(string2) // prints: "01"
let string3 = String(format:"%02X", arguments: [211])
print(string3) // prints: "D3"
let string4 = String(format: "%02X, %02X, %02X", arguments: [12, 121, 255])
print(string4) // prints: "0C, 79, FF"
스위프트 5.2.4
let value = 200
let hexString = String(format: "%02X", value)
위의 답변은 32비트 Int 범위의 값에 대해서는 정상적으로 작동하지만 값이 롤오버되므로 이 값을 초과하는 값은 작동하지 않습니다.
32비트 Int보다 큰 값에는 길이 한정자를 사용해야 합니다.
%x = 부호 없는 32비트 정수( 부호 없는 int)
ll = 다음 d, o, u, x 또는 X 변환 지정자가 길고 부호 없는 긴 인수에 적용되도록 지정하는 길이 한정자입니다.
let hexString = String(format:"%llX", decimalValue)
사용하기
let string2 = String(format:"%02X", 1)
print(string2) // prints: "01"
Swift3에서는 Import Foundation이 필요하지 않습니다. 적어도 프로젝트에서는 그렇지 않습니다.문자열은 NSString과 같은 모든 기능을 가지고 있어야 합니다.
언급URL : https://stackoverflow.com/questions/24229505/how-to-convert-an-int-to-hex-string-in-swift
'source' 카테고리의 다른 글
MySQL: FULL OUTER JOIN - 열 하나를 병합하려면 어떻게 해야 합니까? (0) | 2023.08.29 |
---|---|
iOS 자동 레이아웃: 두 개의 동일한 너비의 버튼이 나란히 있습니다. (0) | 2023.08.29 |
LEFT JOIN을 사용할 때와 INNER JOIN을 사용할 때? (0) | 2023.08.29 |
jQuery 플러그인 검증 - 단일 필드의 유효성 검사 트리거 (0) | 2023.08.29 |
데이터베이스의 테이블 크기를 결정하기 위한 쿼리?(계속) (0) | 2023.08.29 |