ওবজে-সি-তে আমি স্বাক্ষরবিহীন পূর্ণসংখ্যা n কে একটি হেক্স স্ট্রিং দিয়ে রূপান্তরিত করতাম
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
দ্রষ্টব্য: 2
এই উদাহরণের মধ্যে ক্ষেত্র প্রস্থ এবং পছন্দসই সর্বনিম্ন দৈর্ঘ্য উপস্থাপন করে । 0
প্যাড থেকে বলা হয়েছে যে সব নেতৃস্থানীয় সাথে ভালো ফলাফল 0
এর প্রয়োজনে। (ছাড়া 0
, ফলাফলটি শীর্ষস্থানীয় স্থানের সাথে প্যাড করা হবে)। অবশ্যই, যদি ফলাফলটি দুটি অক্ষরের চেয়ে বড় হয়, তবে ক্ষেত্রের দৈর্ঘ্য প্রস্থে ছড়িয়ে যাবে না 2
; এটি পূর্ণ ফলাফল প্রদর্শন করতে প্রয়োজনীয় দৈর্ঘ্যে প্রসারিত হবে।
এটি কেবল তখনই কাজ করে যদি আপনি Foundation
আমদানি করেন (এর মধ্যে Cocoa
বা এর আমদানি অন্তর্ভুক্ত থাকে UIKit
)। আপনি যদি আইওএস বা ম্যাকস প্রোগ্রামিং করে থাকেন তবে এটি কোনও সমস্যা নয় ।
বড় হাতের ব্যবহার করুন X
যদি আপনি চান A...F
এবং ছোট হাতের x
যদি আপনি চান a...f
:
String(format: "%x %X", 64206, 64206) // "face FACE"
তোমার চেয়ে বড় মান পূর্ণসংখ্যা প্রিন্ট করতে চান UInt32.max
, যোগ ll
( এল-এল , না এগারো বিন্যাস স্ট্রিং):
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"
সুইফটে ঠিক এর জন্য একটি নির্দিষ্ট init
পদ্ধতি চালু রয়েছে String
:
let hex = String(0xF, radix: 16, uppercase: false)
println("hex=\(hex)") // Output: f
"0xF"
একটি রূপান্তর করতে চান UInt
?
let number = UInt("0xF".stringByReplacingOccurrencesOfString("0x", withString:""), radix: 16)
, number
ধরণের হবে UInt?
আপনার যদি আরও একটি প্রশ্ন জিজ্ঞাসা করা প্রয়োজন :)
String(0xf, radix: 0x10, uppercase: false)
আপনার প্রয়োজন অনুসারে সুইফট 5 এর সাহায্যে, আপনার সমস্যা সমাধানের জন্য আপনি নিম্নলিখিত তিনটি পদ্ধতির মধ্যে একটি চয়ন করতে পারেন।
String
এর init(_:radix:uppercase:)
ইনিশিয়ালাইজার ব্যবহার করা হচ্ছেনিম্নলিখিত ঘোষণা সহ সুইফ্টের String
একটি init(_:radix:uppercase:)
প্রাথমিককরণ রয়েছে:
init<T>(_ value: T, radix: Int = 10, uppercase: Bool = false) where T : BinaryInteger
বেস 10, বা অন্য কোনও নির্দিষ্ট বেসে প্রদত্ত মানকে উপস্থাপন করে একটি স্ট্রিং তৈরি করে।
নীচের প্লেগ্রাউন্ড কোডটি কীভাবে এমন একটি ইভেন্ট তৈরি করতে String
হয় যা হেক্সাডেসিমাল ফর্ম্যাটে 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"
String
এর init(format:_:)
ইনিশিয়ালাইজার ব্যবহার করা হচ্ছেFoundation
উপলব্ধ String
একটি init(format:_:)
সূচনাকারী। init(format:_:)
নিম্নলিখিত ঘোষণা আছে:
init(format: String, _ arguments: CVarArg...)
String
প্রদত্ত বিন্যাসের স্ট্রিংটিকে টেম্পলেট হিসাবে ব্যবহার করে আরম্ভ করা কোনও বস্তু ফেরত দেয় যাতে বাকী আর্গুমেন্টের মান পরিবর্তিত হয়।
অ্যাপলের স্ট্রিং প্রোগ্রামিং গাইডটি ফর্ম্যাট স্পেসিফায়ারগুলির একটি তালিকা দেয় যা সমর্থিত String
এবং NSString
। এই ফর্ম্যাট নির্দিষ্টকরণকারীদের মধ্যে, %X
নিম্নলিখিত বিবরণ রয়েছে :
স্বাক্ষরিত 32-বিট পূর্ণসংখ্যার (
unsigned int
), 0-9 অঙ্কগুলি এবং বড় হাতের এ-এফ ব্যবহার করে হেক্সাডেসিমালে মুদ্রিত।
নীচের খেলার মাঠের কোডটি কীভাবে একটি 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"
String
এর init(format:arguments:)
ইনিশিয়ালাইজার ব্যবহার করা হচ্ছেFoundation
উপলব্ধ String
একটি init(format:arguments:)
সূচনাকারী। 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"
উপরের উত্তরগুলি 32 বিট ইন্টের পরিসীমা মানের জন্য সূক্ষ্ম কাজ করে তবে মানটি গড়িয়ে যাওয়ার সাথে সাথে এর মানগুলি কাজ করবে না।
আপনাকে 32 বিট ইন্টের চেয়ে বেশি মানের জন্য দৈর্ঘ্যের সংশোধক ব্যবহার করতে হবে
% x = স্বাক্ষরিত 32-বিট পূর্ণসংখ্যা (স্বাক্ষরযুক্ত স্বাক্ষরিত)
ll = দৈর্ঘ্য সংশোধনকারী উল্লেখ করে যে নিম্নলিখিত ডি, ও, ইউ, এক্স, বা এক্স রূপান্তর নির্দিষ্টকরণটি দীর্ঘ দীর্ঘ বা স্বাক্ষরযুক্ত দীর্ঘ দীর্ঘ যুক্তির ক্ষেত্রে প্রযোজ্য।
let hexString = String(format:"%llX", decimalValue)
Int("hexaString", radix: 16)
সুইফ্ট 5.2.4
let value = 200
let hexString = String(format: "%02X", value)
String s = "0x" + String(n, radix: 16)