রুবিতে একটি পূর্ণসংখ্যাকে হেক্সাডেসিমাল স্ট্রিংয়ে রূপান্তর করা


206

রুবিতে কোনও পূর্ণসংখ্যাকে তার হেক্সাডেসিমাল সমতলে রূপান্তর করার জন্য কি কোনও অন্তর্নির্মিত উপায় রয়েছে?

এর বিপরীত কিছু String#to_i:

"0A".to_i(16) #=>10

সম্ভবত পছন্দ করুন:

"0A".hex #=>10

আমি কীভাবে নিজের রোল করতে হয় তা জানি তবে এটি সম্ভবত রুবি ফাংশনে বিল্ট ব্যবহার করা আরও দক্ষ।

উত্তর:


325

আপনি to_s10 ব্যতীত অন্য একটি বেস দিতে পারেন :

10.to_s(16)  #=> "a"

দ্রষ্টব্য যে রুবি ২.৪ এ FixNumএবং ক্লাসে BigNumএকীভূত হয়েছিল Integer। যদি আপনি কোনও পুরানো রুবি ব্যবহার করেন তবে ফিক্সনাম #to_s এবং বিগনুম # এর ডকুমেন্টেশন চেক করুনto_s


4
এটাই আমি উত্তরটি খুঁজছিলাম তবে এটি লিঙ্কযুক্ত পৃষ্ঠায় নথিভুক্ত নয় str.to_s => স্ট্রিংটি প্যারামিটারগুলি গ্রহণ না করে নির্দিষ্ট করা হয়েছে এবং "রিসিভারটি ফিরিয়ে দেয়" has একমাত্র ডকুমেন্টেশন হিসাবে, তবে এটি কাজ করছে বলে মনে হচ্ছে
ম্যাট হাটটন

2
এই কপি পেস্ট ভুল সম্পর্কে অবশ্যই স্ট্রিংয়ে to_s আর্গুমেন্ট নেয় না তবে ফিক্সনামে এটি করে :)
জিন

3
আহ, আমি একটি টোস পদ্ধতিতে পূর্ণসংখ্যার অধীনে খুঁজছিলাম এবং একটিও পাইনি। আমি পরের বারের মতো ফিক্সনামের অধীনেও থাকব
ম্যাট

1
আসল নম্বরটি ফিক্সনামের উদাহরণ হিসাবে নিশ্চিত করুন, ফ্লোট একটি ব্যতিক্রম ছুঁড়ে দেবে।
লী

88

কিভাবে ব্যবহার সম্পর্কে %/ sprintf:

i = 20
"%x" % i  #=> "14"

15
এটি দেখানোর জন্য ধন্যবাদ, আমার এমন কিছু দরকার ছিল যা আমাকে একটি নির্দিষ্ট দৈর্ঘ্যের স্ট্রিং '0' দিয়ে চাপিয়ে দেয়। উদা: "% 02X"% 10 # => "0 এ"
অ্যারন হিন্নি

42
এবং সেখানে অন্যান্য রুবি নবাগতদের জন্য: "#%02x%02x%02x" % [255, 0, 10] #=> "#ff000a"- বেশ কয়েকটি আরগ কীভাবে প্রেরণ করা যায় তা বুঝতে আমাকে কিছুটা সময় নিয়েছিল took
এনিভেস

1
এটি রুবির একটি অত্যন্ত ভয়ঙ্কর স্নিপেট!
OzBandit

4
@ টমডি% একটি স্ট্রিং পদ্ধতি যা স্প্রিন্টফ ফর্ম্যাটিংয়ের জন্য কার্যকরভাবে একটি শর্টহ্যান্ড সরবরাহ করে (তারা একই অভ্যন্তরীণ কলগুলি করে)। এটা তোলে স্ট্রিং ক্লাসে নথিভুক্ত হচ্ছে দেখতে ruby-doc.org/core-1.9.3/String.html#method-i-25
tardate

2
কম সদৃশ:[255, 0, 10].map{|x| '%02x'%x}.join
রক ক্রালজ

78

সংক্ষেপ:

p 10.to_s(16) #=> "a"
p "%x" % 10 #=> "a"
p "%02X" % 10 #=> "0A"
p sprintf("%02X", 10) #=> "0A"
p "#%02X%02X%02X" % [255, 0, 10] #=> "#FF000A"

সংখ্যার বিন্যাসের সংখ্যার জন্য ধন্যবাদ। সে সম্পর্কে ভুলে
গিয়েছি

আমার দিন বাঁচিয়েছে। দুর্দান্ত আরজিবি রূপান্তর
টিম ক্রেটস্মার

14

এখানে অন্য পদ্ধতির:

sprintf("%02x", 10).upcase

জন্য ডকুমেন্টেশান দেখুন sprintf: এখান http://www.ruby-doc.org/core/classes/Kernel.html#method-i-sprintf


10
sprintf("%02X", 10)উপরের কেস এক্স এর কারণে বড় হাতের অক্ষর হবে the আপকেস পদ্ধতিটি কল করার প্রয়োজন নেই। : কার্নেল নির্দিষ্ট অধ্যায় এই হল ruby-doc.org/core-1.9.3/Kernel.html#method-i-format
BookOfGreg

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.