Objective-C는 16진수 문자열을 정수로 구문 분석합니다.
Objective-C에서 숫자를 나타내는 16진수 문자열을 구문 분석하는 방법을 알고 싶습니다.저는 목표 또는 C 기반 방법을 둘 다 사용할 의향이 있습니다.
예:
#01FFFFAB
정수: 33554347로 구문 분석해야 합니다.
어떤 도움이라도 주시면 감사하겠습니다!
Joshua Weinberg의 대답은 대부분 맞지만,0x
prefix는 16진수 정수를 스캔할 때 선택할 수 있습니다.형식에 문자열이 있는 경우#01FFFFAB
, 여전히 사용할 수 있습니다.NSScanner
, 첫 번째 캐릭터는 건너뛸 수 있습니다.
unsigned result = 0;
NSScanner *scanner = [NSScanner scannerWithString:@"#01FFFFAB"];
[scanner setScanLocation:1]; // bypass '#' character
[scanner scanHexInt:&result];
NSS 스캐너를 사용하여 이 작업을(를)
unsigned int outVal;
NSScanner* scanner = [NSScanner scannerWithString:@"0x01FFFFAB"];
[scanner scanHexInt:&outVal];
outVal
당신이 찾고 있는 int가 들어있을 겁니다0x는 옵션입니다.
sttol()는 당신의 친구입니다.
이것은 문자열을 long으로 변환하고, 숫자의 밑부분을 전달할 수 있습니다.#를 제거하고 먼저 종료하거나 첫 번째 숫자 문자에 대한 포인터를 전달합니다.
변환은 아래 라인을 이용하시면 됩니다.단 하나의 라인 코드입니다.
NSString *hexString = @"01FFFFAB";
length = (UInt64)strtoull([hexString UTF8String], NULL, 16);
NSLog(@"The required Length is %d", length);
해피코딩!!!
스위프트 4 표준 라이브러리는 모든 정수 타입을 파싱하기 위한 새로운 이니셜라이저를 도입했습니다.radix(즉, base)로 구문 분석하는 데 문자열이 필요하고 선택적 정수를 반환합니다.
let number = Int("01FFFFAB", radix: 16)!
사과에 의하면:
NSS 스캐너 개체는 NSS 문자열 개체의 문자를 숫자 및 문자열 값으로 해석하고 변환합니다.
그래서, 만일 당신이 가지고 있다면,NSData
다음은 obju can do next
NSString *dataDescription = data.description;
NSString *dataAsString = [dataDescription substringWithRange:NSMakeRange(1, [dataDescription length]-2)];
unsigned intData = 0;
NSScanner *scanner = [NSScanner scannerWithString:dataAsString];
[scanner scanHexInt:&intData];
스위프트 3의 경우:
var hex = "#01FFFFAB"
hex.remove(at: hex.startIndex)
var rgbValue:UInt32 = 0
Scanner(string: hex).scanHexInt32(&rgbValue)
// rgbValue == 33554347
언급URL : https://stackoverflow.com/questions/3648411/objective-c-parse-hex-string-to-integer
'programing' 카테고리의 다른 글
Angular CLI에서 피어 종속성을 설치하려면 어떻게 해야 합니까? (0) | 2023.09.17 |
---|---|
RMySQL에서 결과 집합을 닫는 방법은? (0) | 2023.09.17 |
Excel 스프레드시트 데이터를 VBA가 포함된 다른 Excel 스프레드시트로 가져오기 (0) | 2023.09.17 |
플로팅 없이 부트스트랩 4로 텍스트 랩 어라운드 이미지를 만드는 방법은? (0) | 2023.09.17 |
setRequest에서 설정한 Ajax 헤더를 제거할 수 있는 방법이 있습니까?머리글()? (0) | 2023.09.17 |