2015-02-20 14 views
10

Xin lỗi nếu điều này có vẻ thực sự đơn giản, tôi không thể tìm thấy nó ở bất cứ nơi nào trực tuyến.Hex to Decimal - Swift

Tôi có một UInt8 trong hex, tôi cần chuyển nó thành số thập phân. Làm thế nào để tôi đạt được điều này một cách nhanh chóng?

Ví dụ:

"ff"

Cảm ơn

+1

thể trùng lặp của [Làm thế nào để chuyển đổi số hex để bin trong Swift?] (Http://stackoverflow.com/ câu hỏi/26284223/cách chuyển đổi-hex-number-to-bin-trong-swift) – Amadan

+0

(nếu theo "thập phân", bạn có nghĩa là 'UInt8' thực sự giống như' 255' và không phải là một chuỗi khác có biểu diễn thập phân, ' "255" '). – Amadan

+0

Tôi cần có UInt8 – JoeBayLD

Trả lời

27

Nếu bạn có một chuỗi đại diện, "ff", bạn có thể sử dụng UInt8(_:radix:):

let string = "ff" 
if let value = UInt8(string, radix: 16) { 
    print(value) 
} 
+0

Điều cuối cùng hoạt động, ngoại trừ một điều. Tất cả Ints là chính xác trừ 0. Nó trả về nil thay vì 0 và thne nhảy tới 1. Ý tưởng? – JoeBayLD

+0

Tôi đã sửa nó. Vấn đề là giá trị var: UInt8 !. Tôi đã làm cho nó var giá trị: UInt8 = 0. Bây giờ nó hoạt động. – JoeBayLD

+0

Bắt tốt. Tôi đã cập nhật câu trả lời của mình cho phù hợp. Cảm ơn! – Rob

2

bạn có thể sử dụng chức năng strtoul để chuyển đổi hex của bạn để số thập phân:

let result = UInt8(strtoul("ff", nil, 16)) // 255 
+0

Điều đó có hiệu quả. Một điều nữa. Nếu tôi in NSData của tôi là . Tôi có thể chuyển đổi thành chuỗi và xóa ký tự đầu tiên và cuối cùng. Nhưng đó là cách tốt nhất để làm điều đó? – JoeBayLD

+0

Sẽ thực hiện. Cảm ơn – JoeBayLD

+0

bạn được chào đón –

0

Hãy thử mã này, Nó phù hợp với tôi.

// Hex để thập phân

let h2 = "ff" 
let d4 = Int(h2, radix: 16)! 
print(d4) 

Hy vọng điều này là giúp đỡ cho một số một