Erlang 21 - 12. External Term Format

12 बाहरी शब्द प्रारूप




erlang

12 बाहरी शब्द प्रारूप

12.1 परिचय

बाहरी शब्द प्रारूप मुख्य रूप से एर्लांग के वितरण तंत्र में उपयोग किया जाता है।

जैसा कि एर्लैंग की निश्चित संख्या है, कुछ एप्लिकेशन के भीतर उपयोग किए जाने वाले बाहरी प्रारूप के विनिर्देश को परिभाषित करने के लिए प्रोग्रामर की आवश्यकता नहीं है। सभी एरलैंग शब्दों में एक बाहरी प्रतिनिधित्व है और विभिन्न शब्दों की व्याख्या अनुप्रयोग-विशिष्ट है।

Erlang में BIF erlang:term_to_binary/1,2 का उपयोग किसी शब्द को बाहरी प्रारूप में बदलने के लिए किया जाता है। द्विआधारी डेटा एन्कोडिंग को एक शब्द में बदलने के लिए, BIF erlang:binary_to_term/1 का उपयोग किया जाता है।

वितरण यह अंतर्निहित रूप से नोड सीमाओं में संदेश भेजते समय होता है।

शब्द प्रारूप का समग्र स्वरूप इस प्रकार है:

1 1 एन
131 Tag Data

तालिका 12.1: शब्द प्रारूप

ध्यान दें

जब संदेश passed between connected nodes किए जाते passed between connected nodes और distribution header का उपयोग किया जाता है, तो संस्करण संख्या (131) वाले पहले बाइट को उन शब्दों से छोड़ दिया जाता है जो वितरण हेडर का अनुसरण करते हैं। ऐसा इसलिए है क्योंकि वितरण शीर्षलेख में संस्करण संख्या संस्करण संस्करण द्वारा निहित है।

संकुचित अवधि प्रारूप इस प्रकार है:

1 1 4 एन
131 80 UncompressedSize Zlib-compressedData

तालिका 12.2: संपीड़ित शब्द प्रारूप

असम्पीडित आकार (बड़े-एंडियन बाइट क्रम में अहस्ताक्षरित 32-बिट पूर्णांक) डेटा का आकार संकुचित होने से पहले था। संकुचित डेटा का विस्तार होने पर निम्न प्रारूप होता है:

1 असम्पीडित आकार
Tag Data

तालिका 12.3: विस्तारित होने पर संकुचित डेटा प्रारूप

ध्यान दें

ERTS 9.0 (OTP 20) से, परमाणुओं में कोई भी यूनिकोड वर्ण हो सकता है और हमेशा UTF-8 बाहरी स्वरूपों ATOM_UTF8_EXT या SMALL_ATOM_UTF8_EXT का उपयोग करके एन्कोड किया SMALL_ATOM_UTF8_EXT । पुराने लैटिन -1 प्रारूप ATOM_EXT और SMALL_ATOM_EXT को पदावनत किया जाता है और केवल पुरानी संगतता के लिए रखा जाता है जब पुराने नोड्स द्वारा एन्कोड किए गए शब्दों को डिकोडिंग किया जाता है।

बाहरी प्रारूप में UTF-8 एन्कोडेड परमाणुओं का समर्थन ERTS 5.10 (OTP R16) के बाद से उपलब्ध है। यह संयम ऐसे पुराने नोड्स को नए OTP 20 नोड से प्राप्त किसी भी यूनिकोड परमाणु को डीकोड, स्टोर और एनकोड करने की अनुमति देता है।

किसी परमाणु में अधिकतम स्वीकृत वर्ण 255 हैं। UTF-8 मामले में, प्रत्येक वर्ण को एन्कोड किए जाने के लिए 4 बाइट्स की आवश्यकता हो सकती है।

12.2 वितरण हैडर

ईआरटीएस 5.7.2 से पुराने परमाणु कैश प्रोटोकॉल को गिरा दिया गया था और एक नया पेश किया गया था। इस प्रोटोकॉल ने वितरण हेडर पेश किया। 5.7.2 से पहले ईआरटीएस संस्करण के साथ नोड्स अभी भी नए नोड्स के साथ संवाद कर सकते हैं, लेकिन कोई वितरण हेडर और कोई एटम कैश का उपयोग नहीं किया जाता है।

वितरण हेडर में केवल एक एटम कैश संदर्भ अनुभाग होता है, लेकिन भविष्य में इसमें अधिक जानकारी हो सकती है। वितरण शीर्षलेख बाहरी प्रारूप पर एक या अधिक एर्लैंग शब्द रखता है। अधिक जानकारी के लिए, distribution protocol प्रलेखन में protocol between connected nodes distribution protocol प्रलेखन देखें।

वितरण शीर्ष लेख के बाद बाहरी स्वरूप पर एन्कोडेड ATOM_CACHE_REF प्रविष्टियों को वितरण हैडर में किए गए परमाणु कैश संदर्भों के संदर्भ में वितरण हेडर के संदर्भ में बाहरी प्रारूप पर एन्कोड किया गया है। सीमा 0 <= AtomCacheReferenceIndex <255 है, अर्थात, निम्न शर्तों से अधिकतम 255 अलग-अलग परमाणु कैश संदर्भ बनाए जा सकते हैं।

वितरण हेडर प्रारूप इस प्रकार है:

1 1 1 NumberOfAtomCacheRefs / 2 + 1 | 0 एन | 0
131 68 NumberOfAtomCacheRefs Flags AtomCacheRefs

तालिका 12.4: वितरण हैडर प्रारूप

जब तक कि NumberOfAtomCacheRefs 0 न हो, Flags NumberOfAtomCacheRefs/2+1 बाइट्स Flags मिलकर बनता है। यदि NumberOfAtomCacheRefs 0 , तो Flags और AtomCacheRefs छोड़ AtomCacheRefs जाते हैं। प्रत्येक एटम कैश संदर्भ में आधा बाइट ध्वज क्षेत्र होता है। एक विशिष्ट AtomCacheReferenceIndex समान फ्लैग ध्वज बाइट संख्या AtomCacheReferenceIndex/2 में स्थित हैं। फ्लैग बाइट 0 NumberOfAtomCacheRefs बाइट के बाद पहला बाइट है। यहां तक ​​कि AtomCacheReferenceIndex लिए झंडे कम से कम महत्वपूर्ण आधे बाइट में स्थित हैं और एक विषम AtomCacheReferenceIndex लिए झंडे सबसे महत्वपूर्ण आधे बाइट में स्थित हैं।

परमाणु कैश संदर्भ के ध्वज क्षेत्र में निम्न प्रारूप है:

1 बिट 3 बिट्स
NewCacheEntryFlag SegmentIndex

तालिका 12.5:

सबसे महत्वपूर्ण बिट NewCacheEntryFlag । यदि सेट किया गया है, तो संबंधित कैश संदर्भ नया है। तीन सबसे महत्वपूर्ण बिट्स संबंधित एटम कैश प्रविष्टि का SegmentIndex हैं। एक परमाणु कैश में 8 खंड होते हैं, प्रत्येक आकार 256, अर्थात् एक परमाणु कैश में 2048 प्रविष्टियां हो सकती हैं।

परमाणु कैश संदर्भ के लिए ध्वज फ़ील्ड के बाद, एक और आधा बाइट ध्वज फ़ील्ड निम्न प्रारूप के साथ स्थित है:

3 बिट्स 1 बिट
CurrentlyUnused LongAtoms

तालिका 12.6:

उस आधे बाइट में सबसे महत्वपूर्ण बिट फ्लैग LongAtoms । यदि इसे सेट किया जाता है, तो वितरण हेडर में 1 बाइट के बजाय परमाणु लंबाई के लिए 2 बाइट्स का उपयोग किया जाता है।

Flags फ़ील्ड के बाद AtomCacheRefs का पालन करें। पहला AtomCacheRef AtomCacheReferenceIndex 0. के अनुरूप है। उच्चतर सूचकांक AtomCacheReferenceIndex NumberOfAtomCacheRefs - 1 तक अनुक्रम में अनुसरण करते हैं।

यदि अगले NewCacheEntryFlag लिए AtomCacheRef सेट किया गया है, तो निम्न प्रारूप पर एक NewAtomCacheRef इस प्रकार है:

1 1 | 2 लंबाई
InternalSegmentIndex Length AtomText

तालिका 12.7:

InternalSegmentIndex , SegmentIndex साथ मिलकर परमाणु कैश में एक परमाणु कैश प्रविष्टि के स्थान की पूरी तरह से पहचान करता है। Length बाइट्स की संख्या है जिसमें AtomText शामिल हैं। लंबाई एक 2 बाइट बड़ा-एंडियन पूर्णांक है यदि झंडा LongAtoms सेट किया गया है, अन्यथा 1 बाइट पूर्णांक। जब वितरण ध्वज DFLAG_UTF8_ATOMS का distribution handshake में दोनों नोड्स के बीच किया distribution handshake , AtomText में AtomText को UTF-8, अन्यथा लैटिन -1 में एन्कोड किया गया है। निम्नलिखित CachedAtomRef उसी SegmentIndex और InternalSegmentIndex साथ है, क्योंकि यह NewAtomCacheRef एक परमाणु NewAtomCacheRef और InternalSegmentIndex SegmentIndex साथ एक नया NewAtomCacheRef दिखाई देने तक इस परमाणु को संदर्भित करता है।

परमाणुओं की एन्कोडिंग के बारे में अधिक जानकारी के लिए, इस खंड की शुरुआत में note on UTF-8 encoded atoms देखें।

यदि अगले NewCacheEntryFlag लिए AtomCacheRef सेट नहीं किया गया है, तो निम्न प्रारूप पर CachedAtomRef इस प्रकार है:

1
InternalSegmentIndex

तालिका 12.8:

InternalSegmentIndex , SegmentIndex साथ मिलकर परमाणु कैश में परमाणु कैश प्रविष्टि के स्थान की पहचान करता है। इस CachedAtomRef समान परमाणु, नवीनतम NewAtomCacheRef CachedAtomRef है जो पूर्व में पारित वितरण हेडर में इस CachedAtomRef से पहले है।

12.3 atom_cache_ref

1 1
82 AtomCacheReferenceIndex

तालिका 12.9: ATOM_CACHE_REF

distribution header में AtomCacheReferenceIndex साथ परमाणु को संदर्भित करता है।

12.4 small_integer_ext

1 1
97 Int

तालिका 12.10: SMALL_INTEGER_EXT

अहस्ताक्षरित 8-बिट पूर्णांक।

१२.५ पूर्णांक_.5

1 4
98 Int

तालिका 12.11: INTEGER_EXT

बड़े-एंडियन प्रारूप में 32-बिट पूर्णांक पर हस्ताक्षर किए।

12.6 फ्लोट_ टेक्स्ट

1 31
99 Float string

तालिका 12.12: FLOAT_EXT

एक फ्लोट स्ट्रिंग प्रारूप में संग्रहीत किया जाता है। फ्लोट को प्रारूपित करने के लिए स्प्रिंटफ में उपयोग किया जाने वाला प्रारूप "% .20e" है (आवश्यक से अधिक बाइट्स आवंटित हैं)। फ्लोट को अनपैक करने के लिए, प्रारूप "% lf" के साथ sscanf का उपयोग करें।

यह शब्द बाहरी प्रारूप के लघु संस्करण 0 में उपयोग किया जाता है; इसे NEW_FLOAT_EXT द्वारा NEW_FLOAT_EXT किया गया है।

12.7 संदर्भ_ पाठ

1 एन 4 1
101 Node ID Creation

तालिका 12.13: REFERENCE_EXT

एक संदर्भ ऑब्जेक्ट ( erlang:make_ref/0 साथ उत्पन्न वस्तु erlang:make_ref/0 ) को erlang:make_ref/0 Node शब्द एक एनकोडेड परमाणु है, जो कि, ATOM_UTF8_EXT , SMALL_ATOM_UTF8_EXT , या ATOM_CACHE_REF ID फ़ील्ड में एक बड़ा-एंडियन अहस्ताक्षरित पूर्णांक होता है, लेकिन इसे निर्बाध डेटा माना जाता है , क्योंकि यह फ़ील्ड नोड-विशिष्ट है। Creation एक बाइट है जिसमें नोड सीरियल नंबर होता है, जो पुराने (दुर्घटनाग्रस्त) नोड्स को एक नए से अलग करना संभव बनाता है।

ID , केवल 18 बिट्स महत्वपूर्ण हैं; बाकी चीजें 0. हैं। Creation , केवल दो बिट्स महत्वपूर्ण हैं; बाकी हैं 0. देखें NEW_REFERENCE_EXT

12.8 port_ext

1 एन 4 1
102 Node ID Creation

तालिका 12.14: PORT_EXT

एक पोर्ट ऑब्जेक्ट ( erlang:open_port/2 से प्राप्त होता है erlang:open_port/2 ) को erlang:open_port/2 ID एक स्थानीय पोर्ट के लिए नोड-विशिष्ट पहचानकर्ता है। नोड सीमाओं के पार पोर्ट संचालन की अनुमति नहीं है। Creation REFERENCE_EXT तरह ही काम करती है।

12.9 pid_ext

1 एन 4 4 1
103 Node ID Serial Creation

तालिका 12.15: PID_EXT

एक प्रक्रिया पहचानकर्ता ऑब्जेक्ट ( erlang:spawn/3 से प्राप्त erlang:spawn/3 या मित्र) को erlang:spawn/3 ID और Creation फ़ील्ड REFERENCE_EXT तरह ही काम करते हैं, जबकि Serial फ़ील्ड का उपयोग सुरक्षा में सुधार के लिए किया जाता है। ID , केवल 15 बिट्स महत्वपूर्ण हैं; बाकी 0 होने हैं।

12.10 small_tuple_ext

1 1 एन
104 Arity Elements

तालिका 12.16: SMALL_TUPLE_EXT

एक tuple को एनकोड करता है। Arity फ़ील्ड एक अहस्ताक्षरित बाइट है जो यह निर्धारित करती है कि अनुभाग Elements में कितने तत्व हैं।

12.11 लार्ज_टुपल_टेक्

1 4 एन
105 Arity Elements

तालिका 12.17: LARGE_TUPLE_EXT

SMALL_TUPLE_EXT रूप में SMALL_TUPLE_EXT सिवाय इसके कि Arity बड़े-एंडियन प्रारूप में एक अहस्ताक्षरित 4 बाइट पूर्णांक है।

12.12 map_ext

1 4 एन
116 Arity Pairs

तालिका 12.18: MAP_EXT

एक नक्शा एनकोड करता है। Arity क्षेत्र, बड़े-एंडियन प्रारूप में एक अहस्ताक्षरित 4 बाइट पूर्णांक है जो मानचित्र में कुंजी-मूल्य जोड़े की संख्या निर्धारित करता है। की और वैल्यू पेयर ( Ki => Vi ) को निम्न क्रम में सेक्शन Pairs में एनकोड किया गया है: K1, V1, K2, V2,..., Kn, Vn । एक ही नक्शे के भीतर डुप्लिकेट कुंजियों की अनुमति नहीं है

एर्लैंग / ओटीपी 17.0 से

12.13 nil_ext

1
106

तालिका 12.19: NIL_EXT

एक खाली सूची के लिए प्रतिनिधित्व, वह है, एरलंग सिंटैक्स []

12.14 string_ext

1 2 लेन
107 Length Characters

तालिका 12.20: STRING_EXT

स्ट्रिंग में एर्लैंग प्रतिनिधित्व नहीं है, लेकिन वितरण पर अधिक कुशलता से बाइट्स की सूची (सीमा 0-255 में पूर्णांक) भेजने के लिए एक अनुकूलन है। जैसा कि फ़ील्ड Length एक अहस्ताक्षरित 2 बाइट पूर्णांक (बड़ा-एंडियन) है, कार्यान्वयन को सुनिश्चित करना चाहिए कि 65535 से अधिक तत्वों की सूची LIST_EXT रूप में एन्कोड की गई है।

12.15 list_ext

1 4
108 Length Elements Tail

तालिका 12.21: LIST_EXT

Length तत्वों की संख्या है जो अनुभाग Elements में अनुसरण करती है। Tail सूची की अंतिम पूंछ है; यह एक उचित सूची के लिए NIL_EXT , लेकिन सूची अनुचित होने पर (उदाहरण के लिए, [a|b] ) किसी भी प्रकार की हो सकती है।

12.16 बाइनरी_ टेक्स्ट

1 4 लेन
109 Len Data

तालिका 12.22: BINARY_EXT

बायनेरिज़ बिट सिंटैक्स एक्सप्रेशन के साथ या erlang:list_to_binary/1 साथ उत्पन्न होते हैं erlang:list_to_binary/1 , erlang:term_to_binary/1 , या बाइनरी पोर्ट से इनपुट के रूप में। Len लंबाई क्षेत्र एक अहस्ताक्षरित 4 बाइट पूर्णांक (बड़ा-एंडियन) है।

12.17 small_big_ext

1 1 1 n
110 n Sign d(0) ... d(n-1)

तालिका 12.23: SMALL_BIG_EXT

Bignums एक Sign बाइट के साथ एकात्मक रूप में संग्रहीत होते हैं, अर्थात, यदि बिनम सकारात्मक है और 1 अगर यह नकारात्मक है। अंकों को पहले संग्रहित कम से कम महत्वपूर्ण बाइट के साथ संग्रहीत किया जाता है। पूर्णांक की गणना करने के लिए, निम्न सूत्र का उपयोग किया जा सकता है:

B = 256
(d0*B^0 + d1*B^1 + d2*B^2 + ... d(N-1)*B^(n-1))

12.18 लार्ज_बीग_टेक्स्ट

1 4 1 n
111 n Sign d(0) ... d(n-1)

तालिका 12.24: LARGE_BIG_EXT

SMALL_BIG_EXT रूप में समान है सिवाय इसके कि लंबाई क्षेत्र एक अहस्ताक्षरित 4 बाइट पूर्णांक है।

12.19 new_reference_ext

1 2 एन 1 एन '
114 Len Node Creation ID ...

तालिका 12.25: NEW_REFERENCE_EXT

Node और Creation REFERENCE_EXT

ID में बड़े-एंडियन अहस्ताक्षरित पूर्णांक (4 बाइट्स प्रत्येक, इसलिए N' 4 का एक गुणक है) का एक क्रम होता है, लेकिन इसे निर्बाध डेटा माना जाता है।

N' = 4 * Len

ID के पहले शब्द (4 बाइट्स) में, केवल 18 बिट्स महत्वपूर्ण हैं, शेष 0. हैं। Creation , केवल दो बिट्स महत्वपूर्ण हैं, बाकी 0 हैं।

NEW_REFERENCE_EXT को वितरण संस्करण 4 के साथ पेश किया गया था। 4 संस्करण में, N' सबसे अधिक 12 पर होना है।

देखें REFERENCE_EXT

12.20 fun_ext

1 4 एन 1 एन 2 N3 N4 N5
117 NumFree Pid Module Index Uniq Free vars ...

तालिका 12.26: FUN_EXT

Pid

PID_EXT रूप में एक प्रक्रिया पहचानकर्ता। उस प्रक्रिया का प्रतिनिधित्व करता है जिसमें मज़ा बनाया गया था।

Module

ATOM_UTF8_EXT , SMALL_ATOM_UTF8_EXT , या ATOM_CACHE_REF का उपयोग करके एक परमाणु के रूप में ATOM_CACHE_REF । यह वह मॉड्यूल है जिसमें मज़ा लागू किया जाता है।

Index

SMALL_INTEGER_EXT या INTEGER_EXT का उपयोग करके एक पूर्णांक एन्कोड किया गया। यह आमतौर पर मॉड्यूल के फन टेबल में एक छोटा सूचकांक होता है।

Uniq

SMALL_INTEGER_EXT या INTEGER_EXT का उपयोग करके एक पूर्णांक एन्कोड किया गया। Uniq मज़े के लिए पार्स का हैश मान है।

Free vars

संख्या की संख्या, प्रत्येक अपने प्रकार के अनुसार एन्कोडेड।

12.21 new_fun_ext

1 4 1 16 4 4 एन 1 एन 2 N3 N4 N5
112 Size Arity Uniq Index NumFree Module OldIndex OldUniq Pid Free Vars

तालिका 12.27: NEW_FUN_EXT

यह आंतरिक funs की नई एन्कोडिंग है: fun F/A और fun(Arg1,..) -> ... end

Size

फ़ील्ड Size सहित बाइट्स की कुल संख्या।

Arity

फंक्शन को लागू करने की कार्यशीलता।

Uniq

बीम फ़ाइल के महत्वपूर्ण भागों के 16 बाइट्स एमडी 5।

Index

एक सूचकांक संख्या। एक मॉड्यूल के भीतर प्रत्येक मज़ा में एक अद्वितीय सूचकांक होता है। Index को बड़े-एंडियन बाइट क्रम में संग्रहीत किया जाता है।

NumFree

मुक्त चर की संख्या।

Module

ATOM_EXT , SMALL_ATOM_EXT , या ATOM_CACHE_REF का उपयोग करके एक परमाणु के रूप में ATOM_CACHE_REF । क्या वह मॉड्यूल है जिसमें मज़ा लागू किया गया है।

OldIndex

SMALL_INTEGER_EXT या INTEGER_EXT का उपयोग करके एक पूर्णांक एन्कोड किया गया। आमतौर पर मॉड्यूल के फन टेबल में एक छोटा इंडेक्स होता है।

OldUniq

SMALL_INTEGER_EXT या INTEGER_EXT का उपयोग करके एक पूर्णांक एन्कोड किया गया। Uniq मज़े के लिए पार्स पेड़ का हैश मान है।

Pid

PID_EXT रूप में एक प्रक्रिया पहचानकर्ता। उस प्रक्रिया का प्रतिनिधित्व करता है जिसमें मज़ा बनाया गया था।

Free vars

संख्या की संख्या, प्रत्येक अपने प्रकार के अनुसार एन्कोडेड।

12.22 Export_ext

1 एन 1 एन 2 N3
113 Module Function Arity

तालिका 12.28: EXPORT_EXT

यह शब्द बाहरी fun M:F/A लिए एन्कोडिंग है: fun M:F/A

Module और Function परमाणु हैं ( ATOM_EXT , SMALL_ATOM_EXT , या ATOM_CACHE_REF का उपयोग करके एन्कोडेड)।

Arity का उपयोग करके एन्कोड किया गया एक पूर्णांक है।

12.23 bit_binary_ext

1 4 1 लेन
77 Len Bits Data

तालिका 12.29: BIT_BINARY_EXT

यह शब्द एक बिटस्ट्रिंग का प्रतिनिधित्व करता है जिसकी लंबाई बिट्स में 8 से अधिक नहीं होती है। Len फ़ील्ड एक अहस्ताक्षरित 4 बाइट पूर्णांक (बड़ा-एंडियन) है। Bits फ़ील्ड बिट्स (1-8) की संख्या है जो डेटा फ़ील्ड में अंतिम बाइट में उपयोग की जाती है, सबसे महत्वपूर्ण बिट से कम से कम महत्वपूर्ण तक गिना जाता है।

12.24 new_float_ext

1 8
70 IEEE float

तालिका 12.30: NEW_FLOAT_EXT

एक फ्लोट बड़े-एंडियन IEEE प्रारूप में 8 बाइट्स के रूप में संग्रहीत किया जाता है।

यह शब्द बाहरी प्रारूप के लघु संस्करण 1 में उपयोग किया जाता है।

12.25 atom_utf8_ext

1 2 लेन
118 Len AtomName

तालिका 12.31: ATOM_UTF8_EXT

एक परमाणु 2-बाइट अहस्ताक्षरित लंबाई के साथ बड़े-एंडियन क्रम में संग्रहीत किया जाता है, इसके बाद AtomName -8 में AtomName इनकोड युक्त Len बाइट्स होता है।

परमाणुओं की एन्कोडिंग के बारे में अधिक जानकारी के लिए, इस खंड की शुरुआत में note on UTF-8 encoded atoms देखें।

12.26 small_atom_utf8_ext

1 1 लेन
119 Len AtomName

तालिका 12.32: SMALL_ATOM_UTF8_EXT

एक परमाणु 1 बाइट अहस्ताक्षरित लंबाई के साथ संग्रहीत किया जाता है, इसके बाद Len बाइट्स जिसमें यूटीएफ -8 में AtomName कूटबद्ध होता है। UTF-8 में एन्कोड किए गए लंबे परमाणुओं को ATOM_UTF8_EXT का उपयोग करके ATOM_UTF8_EXT जा सकता है।

परमाणुओं की एन्कोडिंग के बारे में अधिक जानकारी के लिए, इस खंड की शुरुआत में note on UTF-8 encoded atoms देखें।

12.27 ATOM_EXT (पदावनत)

1 2 लेन
100 Len AtomName

तालिका 12.33: ATOM_EXT

एक परमाणु को 2-बाइट अहस्ताक्षरित लंबाई के साथ बड़े-एंडियन क्रम में संग्रहीत किया जाता है, इसके बाद 8-बिट लैटिन -1 वर्णों के Len नंबर होते हैं जो AtomName Len लिए अधिकतम स्वीकार्य मूल्य 255 है।

12.28 SMALL_ATOM_EXT (पदावनत)

1 1 लेन
115 Len AtomName

तालिका 12.34: SMALL_ATOM_EXT

एक परमाणु 1 बाइट अहस्ताक्षरित लंबाई के साथ संग्रहीत किया जाता है, इसके बाद 8-बिट लैटिन -1 वर्णों की Len संख्या होती है जो AtomName

ध्यान दें

SMALL_ATOM_EXT को ERTS 5.7.2 में पेश किया गया था और distribution handshake में वितरण ध्वज DFLAG_UTF8_ATOMS आदान-प्रदान की आवश्यकता होती है।