बा

बाइनरी में Elixir

7 अभ्यास

बाइनरी के बारे में

  • बाइनरी प्रकार, बिटस्ट्रिंग प्रकार का एक विशेष रूप है।
  • बाइनरी, बाइट से बनी होती हैं।
    • बाइट में 8 बिट होते हैं।
    • एक बाइट 0 से 255 तक की संख्याएँ दर्शा सकता है
    • बाइट के साथ काम करते समय हेक्साडेसिमल पूर्णांक वैल्यू आम हैं: 0x00 से 0xFF तक।
  • बाइनरी लिटरल <<>> स्पेशल फॉर्म से बनाए जाते हैं।
  • बिटस्ट्रिंग, बाइनरी या स्ट्रिंग को जोड़ने के लिए <>/2 इस्तेमाल किया जा सकता है।
<<255>> == <<0xFF>>
# Overflowing bits are truncated
<<256>> == <<0>>
<<256::size(16)>> == <<1, 0>>

<<"Hello">> == <<72, 101, 108, 108, 111>>

नल-बाइट <<0>> का ही दूसरा नाम है।

स्ट्रिंग एनकोडेड बाइनरी डेटा होती हैं

  • स्ट्रिंग UTF-8 फॉर्मैट में एनकोडेड बाइनरी डेटा होती हैं।
    • इन्हें 8-बिट (एक बाइट) के टुकड़ों में एनकोड किया जाता है, और 255 से ज़्यादा अक्षर दर्शाने के लिए 4 बाइट तक लगते हैं।
    • किसी स्ट्रिंग की लंबाई उसके बाइट साइज़ के बराबर नहीं भी हो सकती।
# This string has a string length of 5, but is made up of 7 bytes
string = "cześć"
String.length(string) != byte_size(string)

# Even emoji strings are encoded binaries
"👍" == <<240, 159, 145, 141>>

बाइनरी डेटा पर पैटर्न मैचिंग

  • बाइनरी पर पैटर्न मैचिंग या तो पूरी बाइनरी पर की जा सकती है, या स्पेशल फॉर्म की मदद से सिर्फ एक हिस्से पर।
    • पैटर्न मैच में केवल अंतिम हिस्से का ही साइज़ वेरिएबल हो सकता है।
# Ignore the first 8 bytes, bind the remaining variable sized binary to `body`
<<_::binary-size(8), body::binary>>

यह स्ट्रिंग के लिए भी किया जा सकता है:

# bind the first 5 bytes to `name`,
# match the string literal " the ",
# bind remaining bytes to `species`
<<name::binary-size(5), " the ", species::binary>> = <<"Frank the Walrus">>
{name, species}
# => {"Frank", "Walrus"}
GitHub के ज़रिए संपादित करें यह लिंक नई विंडो या टैब में खुलता है।

बाइनरी सीखिए

अभ्यास लॉक है

बाइनरी पर अभ्यास करने के लिए 1 और अभ्यास अनलॉक कीजिए