CINXE.COM

role Blob | Raku Documentation

<!DOCTYPE html> <html lang="en" class="fontawesome-i2svg-active fontawesome-i2svg-complete" style="scroll-padding-top:60px"> <head> <title>role Blob | Raku Documentation</title> <meta charset="UTF-8" /> <link href="/assets/images/Camelia.ico" rel="icon" type="image/x-icon"/> <link rel="stylesheet" href="/assets/css/Website.css"/> <link rel="stylesheet" href="/assets/css/typegraph-styling.css"/> <link rel="stylesheet" href="/assets/css/typegraph-dark.css" title="dark"/> <link rel="stylesheet" href="/assets/css/typegraph-light.css" title="light"/> <link rel="stylesheet" href="/assets/css/tm-styling.css"/> <link rel="stylesheet" href="/assets/css/tm-light.css" title="light"/> <link rel="stylesheet" href="/assets/css/tm-dark.css" title="dark"/> <link rel="stylesheet" href="/assets/css/css/rainbow-dark.css" title="dark"/> <link rel="stylesheet" href="/assets/css/css/rainbow-light.css" title="light"/> <link rel="stylesheet" href="/assets/css/css/announce-light.css" title="light"/> <link rel="stylesheet" href="/assets/css/css/announce-dark.css" title="dark"/> <link rel="stylesheet" href="/assets/css/css/filtered-toc-dark.css" title="dark"/> <link rel="stylesheet" href="/assets/css/css/filtered-toc-light.css" title="light"/> <link rel="stylesheet" href="/assets/css/css/page-styling-main.css"/> <link rel="stylesheet" href="/assets/css/css/page-styling-dark.css" title="dark"/> <link rel="stylesheet" href="/assets/css/css/page-styling-light.css" title="light"/> <link rel="stylesheet" href="/assets/css/css/chyronToggle-dark.css" title="dark"/> <link rel="stylesheet" href="/assets/css/css/chyronToggle-light.css" title="light"/> <link rel="stylesheet" href="/assets/css/css/centreToggle-dark.css" title="dark"/> <link rel="stylesheet" href="/assets/css/css/centreToggle-light.css" title="light"/> <link rel="stylesheet" href="/assets/css/css/options-search-light.css" title="light"/> <link rel="stylesheet" href="/assets/css/css/options-search-dark.css" title="dark"/> <link rel="stylesheet" href="/assets/css/listf-styling-light.css" title="light"/> <link rel="stylesheet" href="/assets/css/listf-styling-dark.css" title="dark"/> <link rel="stylesheet" href="/assets/css/all.min.css"/> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/atom-one-light.min.css" title="light" /> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/atom-one-dark.min.css" title="dark" /> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@tarekraafat/autocomplete.js@10.2.7/dist/css/autoComplete.min.css" /> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script src="/assets/scripts/all.min.js"></script><script src="/assets/scripts/tableManager.js"></script><script src="/assets/scripts/filter-script.js"></script><script src="https://cdn.jsdelivr.net/npm/fuzzysort@2.0.4/fuzzysort.min.js"></script><script src="https://cdn.jsdelivr.net/npm/@tarekraafat/autocomplete.js@10.2.7/dist/autoComplete.min.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/haskell.min.js"></script><script src="/assets/scripts/filtered-toc.js"></script><script src="/assets/scripts/options-search.js"></script><script src="/assets/scripts/page-styling.js"></script><script src="/assets/scripts/rainbow.js"></script><script src="/assets/scripts/announcements.js"></script> </head> <body class="has-navbar-fixed-top"> <div id="role_Blob" class="top-of-page"></div> <nav class="navbar is-fixed-top is-flex-touch" role="navigation" aria-label="main navigation"> <div class="navbar-item" style="margin-left: auto;"> <div class="left-bar-toggle" title="Toggle Table of Contents & Index"> <label class="chyronToggle left"> <input id="navbar-left-toggle" type="checkbox"> <span class="text">Contents</span> </label> </div> </div> <div class="container is-justify-content-space-around"> <div class="navbar-brand"> <div class="navbar-logo"> <a class="navbar-item" href="/"> <img src="/assets/images/camelia-recoloured.png" alt="Raku" width="52.83" height="38"> </a> <span class="navbar-logo-tm">tm</span> </div> <a role="button" class="navbar-burger burger" aria-label="menu" aria-expanded="false" data-target="navMenu"> <span aria-hidden="true"></span> <span aria-hidden="true"></span> <span aria-hidden="true"></span> </a> </div> <div id="navMenu" class="navbar-menu"> <div class="navbar-start"> <a class="navbar-item" href="/introduction" title="Getting started, Tutorials, Migration guides"> Introduction </a> <a class="navbar-item" href="/reference" title="Fundamentals, General reference"> Reference </a> <a class="navbar-item" href="/miscellaneous" title="Programs, Experimental"> Miscellaneous </a> <a class="navbar-item" href="/types" title="The core types (classes) available"> Types </a> <a class="navbar-item" href="/routines" title="Searchable table of routines"> Routines </a> <a class="navbar-item" href="https://raku.org" title="Home page for community"> Raku<sup>®</sup> </a> <a class="navbar-item" href="https://web.libera.chat/#raku" title="IRC live chat"> Chat </a> <div class="navbar-item has-dropdown is-hoverable"> <a class="navbar-link"> More </a> <div class="navbar-dropdown is-right is-rounded"> <hr class="navbar-divider"> <a class="navbar-item js-modal-trigger" data-target="download-ebook"> Download E-Book (epub) </a> <hr class="navbar-divider"> <a class="navbar-item" href="/about"> About </a> <hr class="navbar-divider"> <a class="navbar-item has-text-red" href="https://github.com/raku/doc-website/issues"> Report an issue with this site </a> <hr class="navbar-divider"> <a class="navbar-item" href="https://github.com/raku/doc/issues"> Report an issue with the documentation content </a> <hr class="navbar-divider"> <label class="navbar-item centreToggle" title="Enable/Disable Announcements" style="--switch-width: 18"> <input id="cancelAnnouncements" type="checkbox"> <span class="text">Announcements</span> <span class="on">suppressed</span> <span class="off">allowed</span> </label> </div> </div> </div> <div class="navbar-end navbar-search-wrapper"> <div class="navbar-item"> <div class="field has-addons"> <div class="autoComplete_options"> <input class="control input" id="autoComplete" type="search" dir="ltr" spellcheck=false autocorrect="off" autocomplete="off" autocapitalize="off" placeholder="🔍 Type f to search for ..."> </div> <div class="control" title="Search options"> <a class="button is-primary js-modal-trigger" data-target="options-search-info"> <span class="icon"> <i class="fas fa-cogs"></i> </span> </a> </div> </div> </div> </div> <div id="options-search-info" class="modal"> <div class="modal-background"></div> <div class="modal-content"> <div class="box"> <p>The last search was: <span id="selected-candidate" class="ss-selected"></span></p> <div class="control is-grouped is-grouped-centered options-search-controls"> <label class="centreToggle" title="Include extra information (Alt-E)" style="--switch-width: 10.5"> <input id="options-search-extra" type="checkbox"> <span class="text">Extra info</span> <span class="on">yes</span> <span class="off">no</span> </label> <p>The search response can be shortened by excluding the extra information line (Alt-E)</p> <label class="centreToggle" title="Search engine type Strict/Loose (Alt-L)" style="--switch-width: 10.5"> <input id="options-search-loose" type="checkbox"> <span class="text">Search type</span> <span class="on">loose</span> <span class="off">strict</span> </label> <p> The search engine can perform a strict search (only the characters in the search box) or a loose search (Alt-L)</p> <label class="centreToggle" title="Search in headings (Alt-H)" style="--switch-width: 10.5"> <input id="options-search-headings" type="checkbox"> <span class="text">Headings</span> <span class="on">yes</span> <span class="off">no</span> </label> <p>Search through headings in all web-pages (Alt-H)</p> <label class="centreToggle" title="Search indexed items (Alt-I)" style="--switch-width: 10.5"> <input id="options-search-indexed" type="checkbox"> <span class="text">Indexed</span> <span class="on">yes</span> <span class="off">no</span> </label> <p>Search through all indexed items (Alt-I)</p> <label class="centreToggle" title="Search composite pages (Alt-C)" style="--switch-width: 10.5"> <input id="options-search-composite" type="checkbox"> <span class="text">Composite</span> <span class="on">yes</span> <span class="off">no</span> </label> <p>Search in the names of composite pages, which combine similar information from the main web pages (Alt-C)</p> <label class="centreToggle" title="Search primary sources (Alt-P)" style="--switch-width: 10.5"> <input id="options-search-primary" type="checkbox"> <span class="text">Primary</span> <span class="on">yes</span> <span class="off">no</span> </label> <p>Search through the names of the main web pages (Alt-P)</p> <label class="centreToggle" title="Open in new tab (Alt-Q)" style="--switch-width: 10.5"> <input id="options-search-newtab" type="checkbox"> <span class="text">New tab</span> <span class="on">yes</span> <span class="off">no</span> </label> <p>Once a search candidate has been chosen, it can be opened in a new tab or in the current tab (Alt-Q)</p> <p>If all else fails, an item is added to use the Google search engine on the whole site</p> <button class="button is-warning" id="options-search-reset-defaults">Clear options, reset to defaults</button> <p>Exit this page by pressing &lt;Escape&gt;, or clicking on X or on the background.</p> </div> </div> </div> <button class="modal-close is-large" aria-label="close"></button> </div> </div> <div id="download-ebook" class="modal"> <div class="modal-background"></div> <div class="modal-content"> <div class="box"> <p><a href="/RakuDocumentation.epub" download>RakuDocumentation.epub</a> is a work in progress e-book. It targets the <a href="https://www.w3.org/publishing/epub3/">EPUB v3 specification</a>. It needs testing on a variety of ereaders (some of which may still implicitly expect compliance with EPUB v2). The CSS definitely needs enhancing (especially for code snippets). The Ebook opens in a Calibre reader, which is available on all operating systems.</p> <p>Suggestions are welcome and should be addressed by opening an issue on the Raku/doc-website repository</p> <p>Exit this popup by pressing &lt;Escape&gt;, or clicking on X or on the background.</p> </div> </div> <button class="modal-close is-large" aria-label="close"></button> </div> <div id="announcement-modal" class="modal"> <div class="modal-background"></div> <div class="modal-content"> <div class="box"> <div id="raku-doc-announcement"></div> <p>For more see <a href="/announcements">Announcements page</a>.</p> <p>Exit this popup by pressing &lt;Escape&gt;, or clicking on X or on the background.</p> </div> </div> <button class="modal-close is-large" aria-label="close"></button> </div> </div> </nav> <div class="tile is-ancestor section"> <div class="page-edit"> <a class="button page-edit-button" href="https://github.com/Raku/doc/edit/main/doc/Type/Blob.rakudoc" title="Edit this page.&#13;Commit: 5f3c39df5 2024-08-08"> <span class="icon is-right"> <i class="fas fa-pen-alt is-medium"></i> </span> </a> </div> <div id="left-column" class="tile is-parent is-2 is-hidden"> <div id="left-col-inner"> <div class="tabs" id="tabs"> <ul> <li class="is-active" id="toc-tab"> <a>Table of Contents</a> </li> <li id="index-tab"> <a>Index</a> </li> </ul> </div> <div class="field"> <div class="control has-icons-right"> <input id="toc-filter" class="input" type="text" placeholder="Filter"> <span class="icon is-right has-text-grey"> <i class="fas fa-search is-medium"></i> </span> </div> </div> <div class="raku-sidebar"> <aside id="toc-menu" class="menu"> <ul class="menu-list"> <li><a href="#Methods">Methods</a></li> <ul> <li><a href="#method_new">method new</a></li> <li><a href="#method_Bool">method Bool</a></li> <li><a href="#method_Capture">method Capture</a></li> <li><a href="#method_elems">method elems</a></li> <li><a href="#method_bytes">method bytes</a></li> <li><a href="#method_chars">method chars</a></li> <li><a href="#method_Str">method Str</a></li> <li><a href="#method_Stringy">method Stringy</a></li> <li><a href="#method_decode">method decode</a></li> <li><a href="#method_list">method list</a></li> <li><a href="#method_gist">method gist</a></li> <li><a href="#method_subbuf">method subbuf</a></li> <li><a href="#method_allocate">method allocate</a></li> <li><a href="#routine_unpack">routine unpack</a></li> <li><a href="#sub_pack">sub pack</a></li> <li><a href="#method_reverse">method reverse</a></li> </ul> <li><a href="#Methods_on_blob8_only_(6.d,_2018.12_and_later)">Methods on blob8 only (6.d, 2018.12 and later)</a></li> <ul> <li><a href="#method_read-uint8">method read-uint8</a></li> <li><a href="#method_read-int8">method read-int8</a></li> <li><a href="#method_read-uint16">method read-uint16</a></li> <li><a href="#method_read-int16">method read-int16</a></li> <li><a href="#method_read-uint32">method read-uint32</a></li> <li><a href="#method_read-int32">method read-int32</a></li> <li><a href="#method_read-uint64">method read-uint64</a></li> <li><a href="#method_read-int64">method read-int64</a></li> <li><a href="#method_read-uint128">method read-uint128</a></li> <li><a href="#method_read-int128">method read-int128</a></li> <li><a href="#method_read-num32">method read-num32</a></li> <li><a href="#method_read-num64">method read-num64</a></li> </ul> <li><a href="#Methods_on_blob8_only_(6.d,_2019.03_and_later)">Methods on blob8 only (6.d, 2019.03 and later)</a></li> <ul> <li><a href="#method_read-ubits">method read-ubits</a></li> <li><a href="#method_read-bits">method read-bits</a></li> <li><a href="#method_Buf">method Buf</a></li> </ul> </aside> <aside id="index-menu" class="menu is-hidden"> <ul class="menu-list"> <li>Types<ul> <li><a href="#index-entry-blob16">blob16</a></li> <li><a href="#index-entry-blob32">blob32</a></li> <li><a href="#index-entry-blob64">blob64</a></li> <li><a href="#index-entry-blob8">blob8</a></li> </ul></li> </ul> </aside> </div> </div> </div> <div id="main-column" class="tile is-parent" style="overflow-x: hidden;"> <div id="main-col-inner"> <section class="raku page-header"> <div class="container px-4"> <div class="raku page-title has-text-centered"> role Blob </div> <div class="raku page-subtitle has-text-centered"> <p>Immutable buffer for binary data ('Binary Large OBject')</p> </div> </div> </section> <section class="raku page-content"><div class="container px-4"><div class="columns one-col"> <div class="raku-code raku-lang"> <button class="copy-code" title="Copy code"><i class="far fa-clipboard"></i></button> <label>Raku highlighting</label> <div> <pre class="nohighlights"><span class="highlite-KEYWORD">role</span> <span class="highlite-TYPE">Blob</span>[::T <span class="highlite-OPERATOR">=</span> <span class="highlite-TYPE">uint8</span>] <span class="highlite-KEYWORD">does</span> <span class="highlite-TYPE">Positional</span>[<span class="highlite-ROUTINE">T</span>] <span class="highlite-KEYWORD">does</span> <span class="highlite-TYPE">Stringy</span> { }</pre> </div> </div> <p>The <code>Blob</code> role is an immutable interface to binary types, and offers a list-like interface to lists of integers, typically unsigned integers.</p><p>However, it's a parameterized type, and you can instantiate with several integer types:</p> <div class="raku-code raku-lang"> <button class="copy-code" title="Copy code"><i class="far fa-clipboard"></i></button> <label>Raku highlighting</label> <div> <pre class="nohighlights"><span class="highlite-KEYWORD">my</span> <span class="highlite-NAME_SCALAR">$b</span> <span class="highlite-OPERATOR">=</span> <span class="highlite-TYPE">Blob</span>[<span class="highlite-TYPE">int32</span>].<span class="highlite-ROUTINE">new</span>(3<span class="highlite-OPERATOR">,</span> -3<span class="highlite-OPERATOR">,</span> 0xff32<span class="highlite-OPERATOR">,</span> -44); <span class="highlite-ROUTINE">say</span> <span class="highlite-NAME_SCALAR">$b</span>; <span class="highlite-COMMENT"># OUTPUT: «Blob[int32]:0x&lt;03 -3 FF32 -2C&gt;␤» </span></pre> </div> </div> <p>By default, <code>Blob</code> uses 8-bit unsigned integers, that is, it is equivalent to Blob[uint8]. Some other types of <code>Blob</code>s which are used often get their own class name.</p><p><a name="index-entry-blob8" class="index-entry"></a><a name="index-entry-blob16" class="index-entry"></a><a name="index-entry-blob32" class="index-entry"></a><a name="index-entry-blob64" class="index-entry"></a></p><table class="table is-bordered centered pod-table"> <tbody> <tr><td>blob8</td><td>Blob[uint8]</td></tr> <tr><td>blob16</td><td>Blob[uint16]</td></tr> <tr><td>blob32</td><td>Blob[uint32]</td></tr> <tr><td>blob64</td><td>Blob[uint64]</td></tr> </tbody> </table> <p>You can use these in pretty much the same way you would with <code>Blob</code>:</p> <div class="raku-code raku-lang"> <button class="copy-code" title="Copy code"><i class="far fa-clipboard"></i></button> <label>Raku highlighting</label> <div> <pre class="nohighlights"><span class="highlite-KEYWORD">my</span> <span class="highlite-NAME_SCALAR">$blob</span> <span class="highlite-OPERATOR">=</span> blob8.<span class="highlite-ROUTINE">new</span>(3<span class="highlite-OPERATOR">,</span> 6<span class="highlite-OPERATOR">,</span> 254); <span class="highlite-ROUTINE">say</span> <span class="highlite-NAME_SCALAR">$blob</span>; <span class="highlite-COMMENT"># OUTPUT: «Blob[uint8]:0x&lt;03 06 FE&gt;␤»</span></pre> </div> </div> <h1 id="Methods" class="raku-h1"><a href="#role_Blob" title="go to top of document">Methods<a class="raku-anchor" title="direct link" href="#Methods">§</a></a></h1> <h2 id="method_new" class="raku-h2"><a href="#role_Blob" title="go to top of document">method new<a class="raku-anchor" title="direct link" href="#method_new">§</a></a></h2> <!-- defnmark method_new 2 --> <div class="raku-code raku-lang"> <button class="copy-code" title="Copy code"><i class="far fa-clipboard"></i></button> <label>Raku highlighting</label> <div> <pre class="nohighlights"><span class="highlite-KEYWORD">multi</span> <span class="highlite-KEYWORD">method</span> <span class="highlite-ROUTINE">new</span>(Blob:) <span class="highlite-KEYWORD">multi</span> <span class="highlite-KEYWORD">method</span> <span class="highlite-ROUTINE">new</span>(Blob: Blob:D <span class="highlite-NAME_SCALAR">$blob</span>) <span class="highlite-KEYWORD">multi</span> <span class="highlite-KEYWORD">method</span> <span class="highlite-ROUTINE">new</span>(Blob: <span class="highlite-TYPE">int</span> <span class="highlite-NAME_ARRAY">@values</span>) <span class="highlite-KEYWORD">multi</span> <span class="highlite-KEYWORD">method</span> <span class="highlite-ROUTINE">new</span>(Blob: <span class="highlite-NAME_ARRAY">@values</span>) <span class="highlite-KEYWORD">multi</span> <span class="highlite-KEYWORD">method</span> <span class="highlite-ROUTINE">new</span>(Blob: <span class="highlite-OPERATOR">*</span><span class="highlite-NAME_ARRAY">@values</span>)</pre> </div> </div> <p>Creates an empty <code>Blob</code>, or a new <code>Blob</code> from another <code>Blob</code>, or from a list of integers or values (which will have to be coerced into integers):</p> <div class="raku-code raku-lang"> <button class="copy-code" title="Copy code"><i class="far fa-clipboard"></i></button> <label>Raku highlighting</label> <div> <pre class="nohighlights"><span class="highlite-KEYWORD">my</span> <span class="highlite-NAME_SCALAR">$blob</span> <span class="highlite-OPERATOR">=</span> <span class="highlite-TYPE">Blob</span>.<span class="highlite-ROUTINE">new</span>([1<span class="highlite-OPERATOR">,</span> 2<span class="highlite-OPERATOR">,</span> 3]); <span class="highlite-ROUTINE">say</span> <span class="highlite-TYPE">Blob</span>.<span class="highlite-ROUTINE">new</span>(<span class="highlite-STRING_DELIMITER">&lt;</span><span class="highlite-STRING">1 2 3</span><span class="highlite-STRING_DELIMITER">&gt;</span>); <span class="highlite-COMMENT"># OUTPUT: «Blob:0x&lt;01 02 03&gt;␤»</span></pre> </div> </div> <h2 id="method_Bool" class="raku-h2"><a href="#role_Blob" title="go to top of document">method Bool<a class="raku-anchor" title="direct link" href="#method_Bool">§</a></a></h2> <!-- defnmark method_Bool 2 --> <div class="raku-code raku-lang"> <button class="copy-code" title="Copy code"><i class="far fa-clipboard"></i></button> <label>Raku highlighting</label> <div> <pre class="nohighlights"><span class="highlite-KEYWORD">multi</span> <span class="highlite-KEYWORD">method</span> <span class="highlite-TYPE">Bool</span>(Blob:D:)</pre> </div> </div> <p>Returns <code>False</code> if and only if the buffer is empty.</p> <div class="raku-code raku-lang"> <button class="copy-code" title="Copy code"><i class="far fa-clipboard"></i></button> <label>Raku highlighting</label> <div> <pre class="nohighlights"><span class="highlite-KEYWORD">my</span> <span class="highlite-NAME_SCALAR">$blob</span> <span class="highlite-OPERATOR">=</span> <span class="highlite-TYPE">Blob</span>.<span class="highlite-ROUTINE">new</span>(); <span class="highlite-ROUTINE">say</span> <span class="highlite-NAME_SCALAR">$blob</span>.<span class="highlite-TYPE">Bool</span>; <span class="highlite-COMMENT"># OUTPUT: «False␤» </span><span class="highlite-NAME_SCALAR">$blob</span> <span class="highlite-OPERATOR">=</span> <span class="highlite-TYPE">Blob</span>.<span class="highlite-ROUTINE">new</span>([1<span class="highlite-OPERATOR">,</span> 2<span class="highlite-OPERATOR">,</span> 3]); <span class="highlite-ROUTINE">say</span> <span class="highlite-NAME_SCALAR">$blob</span>.<span class="highlite-TYPE">Bool</span>; <span class="highlite-COMMENT"># OUTPUT: «True␤»</span></pre> </div> </div> <h2 id="method_Capture" class="raku-h2"><a href="#role_Blob" title="go to top of document">method Capture<a class="raku-anchor" title="direct link" href="#method_Capture">§</a></a></h2> <!-- defnmark method_Capture 2 --> <div class="raku-code raku-lang"> <button class="copy-code" title="Copy code"><i class="far fa-clipboard"></i></button> <label>Raku highlighting</label> <div> <pre class="nohighlights"><span class="highlite-KEYWORD">method</span> <span class="highlite-TYPE">Capture</span>(Blob:D:)</pre> </div> </div> <p>Converts the object to a <a href="/type/List"><code>List</code></a> which is, in turn, coerced to a <a href="/type/Capture"><code>Capture</code></a>.</p> <h2 id="method_elems" class="raku-h2"><a href="#role_Blob" title="go to top of document">method elems<a class="raku-anchor" title="direct link" href="#method_elems">§</a></a></h2> <!-- defnmark method_elems 2 --> <div class="raku-code raku-lang"> <button class="copy-code" title="Copy code"><i class="far fa-clipboard"></i></button> <label>Raku highlighting</label> <div> <pre class="nohighlights"><span class="highlite-KEYWORD">multi</span> <span class="highlite-KEYWORD">method</span> <span class="highlite-ROUTINE">elems</span>(Blob:D:)</pre> </div> </div> <p>Returns the number of elements of the buffer.</p> <div class="raku-code raku-lang"> <button class="copy-code" title="Copy code"><i class="far fa-clipboard"></i></button> <label>Raku highlighting</label> <div> <pre class="nohighlights"><span class="highlite-KEYWORD">my</span> <span class="highlite-NAME_SCALAR">$blob</span> <span class="highlite-OPERATOR">=</span> <span class="highlite-TYPE">Blob</span>.<span class="highlite-ROUTINE">new</span>([1<span class="highlite-OPERATOR">,</span> 2<span class="highlite-OPERATOR">,</span> 3]); <span class="highlite-ROUTINE">say</span> <span class="highlite-NAME_SCALAR">$blob</span>.<span class="highlite-ROUTINE">elems</span>; <span class="highlite-COMMENT"># OUTPUT: «3␤»</span></pre> </div> </div> <h2 id="method_bytes" class="raku-h2"><a href="#role_Blob" title="go to top of document">method bytes<a class="raku-anchor" title="direct link" href="#method_bytes">§</a></a></h2> <!-- defnmark method_bytes 2 --> <div class="raku-code raku-lang"> <button class="copy-code" title="Copy code"><i class="far fa-clipboard"></i></button> <label>Raku highlighting</label> <div> <pre class="nohighlights"><span class="highlite-KEYWORD">method</span> <span class="highlite-ROUTINE">bytes</span>(Blob:D: <span class="highlite-KEYWORD">--&gt;</span> Int:D)</pre> </div> </div> <p>Returns the number of bytes used by the elements in the buffer.</p> <div class="raku-code raku-lang"> <button class="copy-code" title="Copy code"><i class="far fa-clipboard"></i></button> <label>Raku highlighting</label> <div> <pre class="nohighlights"><span class="highlite-ROUTINE">say</span> <span class="highlite-TYPE">Blob</span>.<span class="highlite-ROUTINE">new</span>([1<span class="highlite-OPERATOR">,</span> 2<span class="highlite-OPERATOR">,</span> 3]).<span class="highlite-ROUTINE">bytes</span>; <span class="highlite-COMMENT"># OUTPUT: «3␤» </span><span class="highlite-ROUTINE">say</span> blob16.<span class="highlite-ROUTINE">new</span>([1<span class="highlite-OPERATOR">,</span> 2<span class="highlite-OPERATOR">,</span> 3]).<span class="highlite-ROUTINE">bytes</span>; <span class="highlite-COMMENT"># OUTPUT: «6␤» </span><span class="highlite-ROUTINE">say</span> blob64.<span class="highlite-ROUTINE">new</span>([1<span class="highlite-OPERATOR">,</span> 2<span class="highlite-OPERATOR">,</span> 3]).<span class="highlite-ROUTINE">bytes</span>; <span class="highlite-COMMENT"># OUTPUT: «24␤»</span></pre> </div> </div> <h2 id="method_chars" class="raku-h2"><a href="#role_Blob" title="go to top of document">method chars<a class="raku-anchor" title="direct link" href="#method_chars">§</a></a></h2> <!-- defnmark method_chars 2 --> <div class="raku-code raku-lang"> <button class="copy-code" title="Copy code"><i class="far fa-clipboard"></i></button> <label>Raku highlighting</label> <div> <pre class="nohighlights"><span class="highlite-KEYWORD">method</span> <span class="highlite-ROUTINE">chars</span>(Blob:D:)</pre> </div> </div> <p>Throws <a href="/type/X/Buf/AsStr"><code>X::Buf::AsStr</code></a> with <code>chars</code> as payload.</p> <h2 id="method_Str" class="raku-h2"><a href="#role_Blob" title="go to top of document">method Str<a class="raku-anchor" title="direct link" href="#method_Str">§</a></a></h2> <!-- defnmark method_Str 2 --> <div class="raku-code raku-lang"> <button class="copy-code" title="Copy code"><i class="far fa-clipboard"></i></button> <label>Raku highlighting</label> <div> <pre class="nohighlights"><span class="highlite-KEYWORD">multi</span> <span class="highlite-KEYWORD">method</span> <span class="highlite-TYPE">Str</span>(Blob:D:)</pre> </div> </div> <p>Throws <a href="/type/X/Buf/AsStr"><code>X::Buf::AsStr</code></a> with <a href="/type/Str"><code>Str</code></a> as payload. In order to convert to a <a href="/type/Str"><code>Str</code></a> you need to use <a href="/routine/decode"><code>.decode</code></a>.</p> <h2 id="method_Stringy" class="raku-h2"><a href="#role_Blob" title="go to top of document">method Stringy<a class="raku-anchor" title="direct link" href="#method_Stringy">§</a></a></h2> <!-- defnmark method_Stringy 2 --> <div class="raku-code raku-lang"> <button class="copy-code" title="Copy code"><i class="far fa-clipboard"></i></button> <label>Raku highlighting</label> <div> <pre class="nohighlights"><span class="highlite-KEYWORD">multi</span> <span class="highlite-KEYWORD">method</span> <span class="highlite-TYPE">Stringy</span>(Blob:D:)</pre> </div> </div> <p>Throws <a href="/type/X/Buf/AsStr"><code>X::Buf::AsStr</code></a> with <a href="/type/Stringy"><code>Stringy</code></a> as payload.</p> <h2 id="method_decode" class="raku-h2"><a href="#role_Blob" title="go to top of document">method decode<a class="raku-anchor" title="direct link" href="#method_decode">§</a></a></h2> <!-- defnmark method_decode 2 --> <div class="raku-code raku-lang"> <button class="copy-code" title="Copy code"><i class="far fa-clipboard"></i></button> <label>Raku highlighting</label> <div> <pre class="nohighlights"><span class="highlite-KEYWORD">multi</span> <span class="highlite-KEYWORD">method</span> <span class="highlite-ROUTINE">decode</span>(Blob:D: <span class="highlite-NAME_SCALAR">$encoding</span> <span class="highlite-OPERATOR">=</span> <span class="highlite-ROUTINE">self</span>.<span class="highlite-ROUTINE">encoding</span> <span class="highlite-OPERATOR">//</span> <span class="highlite-STRING_DELIMITER">&quot;</span><span class="highlite-STRING">utf-8</span><span class="highlite-STRING_DELIMITER">&quot;</span>)</pre> </div> </div> <div class="raku-code raku-lang"> <button class="copy-code" title="Copy code"><i class="far fa-clipboard"></i></button> <label>Raku highlighting</label> <div> <pre class="nohighlights"><span class="highlite-KEYWORD">multi</span> <span class="highlite-KEYWORD">method</span> <span class="highlite-ROUTINE">decode</span>(Blob:D: <span class="highlite-NAME_SCALAR">$encoding</span><span class="highlite-OPERATOR">,</span> <span class="highlite-TYPE">Str</span> <span class="highlite-OPERATOR">:</span><span class="highlite-NAME_SCALAR">$replacement</span>!<span class="highlite-OPERATOR">,</span> Bool:D <span class="highlite-OPERATOR">:</span><span class="highlite-NAME_SCALAR">$strict</span> <span class="highlite-OPERATOR">=</span> <span class="highlite-TYPE">False</span>) </pre> </div> </div> <div class="raku-code raku-lang"> <button class="copy-code" title="Copy code"><i class="far fa-clipboard"></i></button> <label>Raku highlighting</label> <div> <pre class="nohighlights"><span class="highlite-KEYWORD">multi</span> <span class="highlite-KEYWORD">method</span> <span class="highlite-ROUTINE">decode</span>(Blob:D: <span class="highlite-NAME_SCALAR">$encoding</span><span class="highlite-OPERATOR">,</span> Bool:D <span class="highlite-OPERATOR">:</span><span class="highlite-NAME_SCALAR">$strict</span> <span class="highlite-OPERATOR">=</span> <span class="highlite-TYPE">False</span>)</pre> </div> </div> <p>Applies an encoding to turn the blob into a <a href="/type/Str"><code>Str</code></a>; the encoding will be UTF-8 by default.</p> <div class="raku-code raku-lang"> <button class="copy-code" title="Copy code"><i class="far fa-clipboard"></i></button> <label>Raku highlighting</label> <div> <pre class="nohighlights"><span class="highlite-KEYWORD">my</span> <span class="highlite-TYPE">Blob</span> <span class="highlite-NAME_SCALAR">$blob</span> <span class="highlite-OPERATOR">=</span> <span class="highlite-STRING_DELIMITER">&quot;</span><span class="highlite-STRING">string</span><span class="highlite-STRING_DELIMITER">&quot;</span>.<span class="highlite-ROUTINE">encode</span>(<span class="highlite-STRING_DELIMITER">'</span><span class="highlite-STRING">utf-8</span><span class="highlite-STRING_DELIMITER">'</span>); <span class="highlite-ROUTINE">say</span> <span class="highlite-NAME_SCALAR">$blob</span>.<span class="highlite-ROUTINE">decode</span>(<span class="highlite-STRING_DELIMITER">'</span><span class="highlite-STRING">utf-8</span><span class="highlite-STRING_DELIMITER">'</span>); <span class="highlite-COMMENT"># OUTPUT: «string␤»</span></pre> </div> </div> <p>On malformed utf-8 <code>.decode</code> will throw X::AdHoc. To handle sloppy utf-8 use <a href="/language/unicode#UTF8-C8"><code>utf8-c8</code></a>.</p> <h2 id="method_list" class="raku-h2"><a href="#role_Blob" title="go to top of document">method list<a class="raku-anchor" title="direct link" href="#method_list">§</a></a></h2> <!-- defnmark method_list 2 --> <div class="raku-code raku-lang"> <button class="copy-code" title="Copy code"><i class="far fa-clipboard"></i></button> <label>Raku highlighting</label> <div> <pre class="nohighlights"><span class="highlite-KEYWORD">multi</span> <span class="highlite-KEYWORD">method</span> <span class="highlite-ROUTINE">list</span>(Blob:D:)</pre> </div> </div> <p>Returns a <a href="/type/List"><code>List</code></a> of integers:</p> <div class="raku-code raku-lang"> <button class="copy-code" title="Copy code"><i class="far fa-clipboard"></i></button> <label>Raku highlighting</label> <div> <pre class="nohighlights"><span class="highlite-ROUTINE">say</span> <span class="highlite-STRING_DELIMITER">&quot;</span><span class="highlite-STRING">zipi</span><span class="highlite-STRING_DELIMITER">&quot;</span>.<span class="highlite-ROUTINE">encode</span>(<span class="highlite-STRING_DELIMITER">&quot;</span><span class="highlite-STRING">ascii</span><span class="highlite-STRING_DELIMITER">&quot;</span>).<span class="highlite-ROUTINE">list</span>; <span class="highlite-COMMENT"># OUTPUT: «(122 105 112 105)␤»</span></pre> </div> </div> <h2 id="method_gist" class="raku-h2"><a href="#role_Blob" title="go to top of document">method gist<a class="raku-anchor" title="direct link" href="#method_gist">§</a></a></h2> <!-- defnmark method_gist 2 --> <div class="raku-code raku-lang"> <button class="copy-code" title="Copy code"><i class="far fa-clipboard"></i></button> <label>Raku highlighting</label> <div> <pre class="nohighlights"><span class="highlite-KEYWORD">method</span> <span class="highlite-ROUTINE">gist</span>(Blob:D: <span class="highlite-KEYWORD">--&gt;</span> Str:D)</pre> </div> </div> <p>Returns the string containing the &quot;gist&quot; of the <code>Blob</code>, <strong>listing up to the first 100</strong> elements, separated by space, appending an ellipsis if the <code>Blob</code> has more than 100 elements.</p> <div class="raku-code raku-lang"> <button class="copy-code" title="Copy code"><i class="far fa-clipboard"></i></button> <label>Raku highlighting</label> <div> <pre class="nohighlights"><span class="highlite-ROUTINE">put</span> <span class="highlite-TYPE">Blob</span>.<span class="highlite-ROUTINE">new</span>(1<span class="highlite-OPERATOR">,</span> 2<span class="highlite-OPERATOR">,</span> 3).<span class="highlite-ROUTINE">gist</span>; <span class="highlite-COMMENT"># OUTPUT: «Blob:0x&lt;01 02 03&gt;␤» </span><span class="highlite-ROUTINE">put</span> <span class="highlite-TYPE">Blob</span>.<span class="highlite-ROUTINE">new</span>(1..2000).<span class="highlite-ROUTINE">gist</span>; <span class="highlite-COMMENT"># OUTPUT: </span><span class="highlite-COMMENT"># Blob:0x&lt;01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 </span><span class="highlite-COMMENT"># 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C </span><span class="highlite-COMMENT"># 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 </span><span class="highlite-COMMENT"># 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A </span><span class="highlite-COMMENT"># 5B 5C 5D 5E 5F 60 61 62 63 64 ...&gt;</span></pre> </div> </div> <h2 id="method_subbuf" class="raku-h2"><a href="#role_Blob" title="go to top of document">method subbuf<a class="raku-anchor" title="direct link" href="#method_subbuf">§</a></a></h2> <!-- defnmark method_subbuf 2 --> <div class="raku-code raku-lang"> <button class="copy-code" title="Copy code"><i class="far fa-clipboard"></i></button> <label>Raku highlighting</label> <div> <pre class="nohighlights"><span class="highlite-KEYWORD">multi</span> <span class="highlite-KEYWORD">method</span> <span class="highlite-ROUTINE">subbuf</span>(<span class="highlite-TYPE">Int</span> <span class="highlite-NAME_SCALAR">$from</span><span class="highlite-OPERATOR">,</span> <span class="highlite-TYPE">Int</span> <span class="highlite-NAME_SCALAR">$len</span> <span class="highlite-OPERATOR">=</span> <span class="highlite-ROUTINE">self</span>.<span class="highlite-ROUTINE">elems</span> <span class="highlite-KEYWORD">--&gt;</span> Blob:D) <span class="highlite-KEYWORD">multi</span> <span class="highlite-KEYWORD">method</span> <span class="highlite-ROUTINE">subbuf</span>(<span class="highlite-TYPE">Range</span> <span class="highlite-NAME_SCALAR">$range</span> <span class="highlite-KEYWORD">--&gt;</span> Blob:D) <span class="highlite-KEYWORD">multi</span> <span class="highlite-KEYWORD">method</span> <span class="highlite-ROUTINE">subbuf</span>(Blob:D: <span class="highlite-NAME_CODE">&amp;From</span>) <span class="highlite-KEYWORD">multi</span> <span class="highlite-KEYWORD">method</span> <span class="highlite-ROUTINE">subbuf</span>(Blob:D: Int:D <span class="highlite-NAME_SCALAR">$From</span><span class="highlite-OPERATOR">,</span> <span class="highlite-NAME_CODE">&amp;End</span>) <span class="highlite-KEYWORD">multi</span> <span class="highlite-KEYWORD">method</span> <span class="highlite-ROUTINE">subbuf</span>(Blob:D: <span class="highlite-NAME_CODE">&amp;From</span><span class="highlite-OPERATOR">,</span> <span class="highlite-NAME_CODE">&amp;End</span>) <span class="highlite-KEYWORD">multi</span> <span class="highlite-KEYWORD">method</span> <span class="highlite-ROUTINE">subbuf</span>(Blob:D: \<span class="highlite-ROUTINE">from</span><span class="highlite-OPERATOR">,</span> <span class="highlite-TYPE">Whatever</span>) <span class="highlite-KEYWORD">multi</span> <span class="highlite-KEYWORD">method</span> <span class="highlite-ROUTINE">subbuf</span>(Blob:D: \<span class="highlite-ROUTINE">from</span><span class="highlite-OPERATOR">,</span> <span class="highlite-TYPE">Numeric</span> \length)</pre> </div> </div> <p>Extracts a part of the invocant buffer, starting from the index with elements <code>$from</code>, and taking <code>$len</code> elements (or less if the buffer is shorter), and creates a new buffer as the result.</p> <div class="raku-code raku-lang"> <button class="copy-code" title="Copy code"><i class="far fa-clipboard"></i></button> <label>Raku highlighting</label> <div> <pre class="nohighlights"><span class="highlite-ROUTINE">say</span> <span class="highlite-TYPE">Blob</span>.<span class="highlite-ROUTINE">new</span>(1..10).<span class="highlite-ROUTINE">subbuf</span>(2<span class="highlite-OPERATOR">,</span> 4); <span class="highlite-COMMENT"># OUTPUT: «Blob:0x&lt;03 04 05 06&gt;␤» </span><span class="highlite-ROUTINE">say</span> <span class="highlite-TYPE">Blob</span>.<span class="highlite-ROUTINE">new</span>(1..10).<span class="highlite-ROUTINE">subbuf</span>(*-2); <span class="highlite-COMMENT"># OUTPUT: «Blob:0x&lt;09 0a&gt;␤» </span><span class="highlite-ROUTINE">say</span> <span class="highlite-TYPE">Blob</span>.<span class="highlite-ROUTINE">new</span>(1..10).<span class="highlite-ROUTINE">subbuf</span>(*-5,2); <span class="highlite-COMMENT"># OUTPUT: «Blob:0x&lt;06 07&gt;␤»</span></pre> </div> </div> <p>For convenience, also allows a <a href="/type/Range"><code>Range</code></a> to be specified to indicate which part of the invocant buffer you would like:</p> <div class="raku-code raku-lang"> <button class="copy-code" title="Copy code"><i class="far fa-clipboard"></i></button> <label>Raku highlighting</label> <div> <pre class="nohighlights"><span class="highlite-ROUTINE">say</span> <span class="highlite-TYPE">Blob</span>.<span class="highlite-ROUTINE">new</span>(1..10).<span class="highlite-ROUTINE">subbuf</span>(2..5); <span class="highlite-COMMENT"># OUTPUT: «Blob:0x&lt;03 04 05 06&gt;␤»</span></pre> </div> </div> <h2 id="method_allocate" class="raku-h2"><a href="#role_Blob" title="go to top of document">method allocate<a class="raku-anchor" title="direct link" href="#method_allocate">§</a></a></h2> <!-- defnmark method_allocate 2 --> <div class="raku-code raku-lang"> <button class="copy-code" title="Copy code"><i class="far fa-clipboard"></i></button> <label>Raku highlighting</label> <div> <pre class="nohighlights"><span class="highlite-KEYWORD">multi</span> <span class="highlite-KEYWORD">method</span> <span class="highlite-ROUTINE">allocate</span>(Blob:U: Int:D <span class="highlite-NAME_SCALAR">$elements</span>) <span class="highlite-KEYWORD">multi</span> <span class="highlite-KEYWORD">method</span> <span class="highlite-ROUTINE">allocate</span>(Blob:U: Int:D <span class="highlite-NAME_SCALAR">$elements</span><span class="highlite-OPERATOR">,</span> <span class="highlite-TYPE">int</span> <span class="highlite-NAME_SCALAR">$value</span>) <span class="highlite-KEYWORD">multi</span> <span class="highlite-KEYWORD">method</span> <span class="highlite-ROUTINE">allocate</span>(Blob:U: Int:D <span class="highlite-NAME_SCALAR">$elements</span><span class="highlite-OPERATOR">,</span> Int:D \<span class="highlite-ROUTINE">value</span>) <span class="highlite-KEYWORD">multi</span> <span class="highlite-KEYWORD">method</span> <span class="highlite-ROUTINE">allocate</span>(Blob:U: Int:D <span class="highlite-NAME_SCALAR">$elements</span><span class="highlite-OPERATOR">,</span> Mu:D <span class="highlite-NAME_SCALAR">$got</span>) <span class="highlite-KEYWORD">multi</span> <span class="highlite-KEYWORD">method</span> <span class="highlite-ROUTINE">allocate</span>(Blob:U: Int:D <span class="highlite-NAME_SCALAR">$elements</span><span class="highlite-OPERATOR">,</span> <span class="highlite-TYPE">int</span> <span class="highlite-NAME_ARRAY">@values</span>) <span class="highlite-KEYWORD">multi</span> <span class="highlite-KEYWORD">method</span> <span class="highlite-ROUTINE">allocate</span>(Blob:U: Int:D <span class="highlite-NAME_SCALAR">$elements</span><span class="highlite-OPERATOR">,</span> Blob:D <span class="highlite-NAME_SCALAR">$blob</span>) <span class="highlite-KEYWORD">multi</span> <span class="highlite-KEYWORD">method</span> <span class="highlite-ROUTINE">allocate</span>(Blob:U: Int:D <span class="highlite-NAME_SCALAR">$elements</span><span class="highlite-OPERATOR">,</span> <span class="highlite-NAME_ARRAY">@values</span>)</pre> </div> </div> <p>Returns a newly created <code>Blob</code> object with the given number of elements. Optionally takes a second argument that indicates the pattern with which to fill the <code>Blob</code>: this can be a single (possibly native) integer value, or any <a href="/type/Iterable"><code>Iterable</code></a> that generates integer values, including another <code>Blob</code>. The pattern will be repeated if not enough values are given to fill the entire <code>Blob</code>.</p> <div class="raku-code raku-lang"> <button class="copy-code" title="Copy code"><i class="far fa-clipboard"></i></button> <label>Raku highlighting</label> <div> <pre class="nohighlights"><span class="highlite-KEYWORD">my</span> <span class="highlite-TYPE">Blob</span> <span class="highlite-NAME_SCALAR">$b0</span> <span class="highlite-OPERATOR">=</span> <span class="highlite-TYPE">Blob</span>.<span class="highlite-ROUTINE">allocate</span>(10,0); <span class="highlite-NAME_SCALAR">$b0</span>.<span class="highlite-ROUTINE">say</span>; <span class="highlite-COMMENT"># OUTPUT: «Blob:0x&lt;00 00 00 00 00 00 00 00 00 00&gt;␤»</span></pre> </div> </div> <p>If the pattern is a general <a href="/type/Mu"><code>Mu</code></a> value, it will fail.</p> <h2 id="routine_unpack" class="raku-h2"><a href="#role_Blob" title="go to top of document">routine unpack<a class="raku-anchor" title="direct link" href="#routine_unpack">§</a></a></h2> <!-- defnmark routine_unpack 2 --> <p>This method is considered <strong>experimental</strong>, in order to use it you will need to do:</p> <div class="raku-code raku-lang"> <button class="copy-code" title="Copy code"><i class="far fa-clipboard"></i></button> <label>Raku highlighting</label> <div> <pre class="nohighlights"><span class="highlite-KEYWORD">use</span> <span class="highlite-TYPE">experimental</span> :pack; <span class="highlite-KEYWORD">multi</span> <span class="highlite-KEYWORD">method</span> <span class="highlite-ROUTINE">unpack</span>(Blob:D: Str:D <span class="highlite-NAME_SCALAR">$template</span>) <span class="highlite-KEYWORD">multi</span> <span class="highlite-KEYWORD">method</span> <span class="highlite-ROUTINE">unpack</span>(Blob:D: <span class="highlite-NAME_ARRAY">@template</span>) <span class="highlite-KEYWORD">multi</span> <span class="highlite-ROUTINE">unpack</span>(Blob:D \blob<span class="highlite-OPERATOR">,</span> Str:D <span class="highlite-NAME_SCALAR">$template</span>) <span class="highlite-KEYWORD">multi</span> <span class="highlite-ROUTINE">unpack</span>(Blob:D \blob<span class="highlite-OPERATOR">,</span> <span class="highlite-NAME_ARRAY">@template</span>)</pre> </div> </div> <p>Extracts features from the blob according to the template string, and returns them as a list.</p><p>The template string consists of zero or more units that begin with an ASCII letter, and are optionally followed by a quantifier. The quantifier can be <code>*</code> (which typically stands for &quot;use up the rest of the Blob here&quot;), or a positive integer (without a <code>+</code>).</p><p>Whitespace between template units is ignored.</p><p>Examples of valid templates include <code>&quot;A4 C n*&quot;</code> and <code>&quot;A*&quot;</code>.</p><p>The following letters are recognized:</p><table class="table is-bordered centered pod-table"> <thead> <tr><th>Letter</th><th>Meaning</th></tr> </thead> <tbody> <tr><td>A</td><td>Extract a string, where each element of the Blob maps to a codepoint</td></tr> <tr><td>a</td><td>Same as 'A'</td></tr> <tr><td>C</td><td>Extract an element from the blob as an integer</td></tr> <tr><td>H</td><td>Extracts a hex string</td></tr> <tr><td>L</td><td>Extracts four elements and returns them as a single unsigned integer</td></tr> <tr><td>n</td><td>Extracts two elements and combines them in &quot;network&quot; (BigEndian) byte order into a single integer</td></tr> <tr><td>N</td><td>Extracts four elements and combines them in &quot;network&quot; (BigEndian) byte order into a single integer</td></tr> <tr><td>S</td><td>Extracts two elements and returns them as a single unsigned integer</td></tr> <tr><td>v</td><td>Same as 'S'</td></tr> <tr><td>V</td><td>Same as 'L'</td></tr> <tr><td>x</td><td>Drop an element from the blob (that is, ignore it)</td></tr> <tr><td>Z</td><td>Same as 'A'</td></tr> </tbody> </table> <p>Example:</p> <div class="raku-code raku-lang"> <button class="copy-code" title="Copy code"><i class="far fa-clipboard"></i></button> <label>Raku highlighting</label> <div> <pre class="nohighlights"><span class="highlite-KEYWORD">use</span> <span class="highlite-TYPE">experimental</span> :pack; <span class="highlite-ROUTINE">say</span> <span class="highlite-TYPE">Blob</span>.<span class="highlite-ROUTINE">new</span>(1..10).<span class="highlite-ROUTINE">unpack</span>(<span class="highlite-STRING_DELIMITER">&quot;</span><span class="highlite-STRING">C*</span><span class="highlite-STRING_DELIMITER">&quot;</span>); <span class="highlite-COMMENT"># OUTPUT: «(1 2 3 4 5 6 7 8 9 10)␤»</span></pre> </div> </div> <h2 id="sub_pack" class="raku-h2"><a href="#role_Blob" title="go to top of document">sub pack<a class="raku-anchor" title="direct link" href="#sub_pack">§</a></a></h2> <!-- defnmark sub_pack 2 --> <p>This subroutine is considered <strong>experimental</strong>, in order to use it you will need to do:</p> <div class="raku-code raku-lang"> <button class="copy-code" title="Copy code"><i class="far fa-clipboard"></i></button> <label>Raku highlighting</label> <div> <pre class="nohighlights"><span class="highlite-KEYWORD">use</span> <span class="highlite-TYPE">experimental</span> :pack; </pre> </div> </div> <div class="raku-code raku-lang"> <button class="copy-code" title="Copy code"><i class="far fa-clipboard"></i></button> <label>Raku highlighting</label> <div> <pre class="nohighlights"><span class="highlite-KEYWORD">multi</span> <span class="highlite-ROUTINE">pack</span>(<span class="highlite-TYPE">Str</span> <span class="highlite-NAME_SCALAR">$template</span><span class="highlite-OPERATOR">,</span> <span class="highlite-OPERATOR">*</span><span class="highlite-NAME_ARRAY">@items</span>) <span class="highlite-KEYWORD">multi</span> <span class="highlite-ROUTINE">pack</span>(<span class="highlite-NAME_ARRAY">@template</span><span class="highlite-OPERATOR">,</span> <span class="highlite-OPERATOR">*</span><span class="highlite-NAME_ARRAY">@items</span>) </pre> </div> </div> <p>Packs the given items according to the template and returns a buffer containing the packed bytes.</p><p>The template string consists of zero or more units that begin with an ASCII letter, and are optionally followed by a quantifier. For details, see <a href="/routine/unpack">unpack</a>.</p> <h2 id="method_reverse" class="raku-h2"><a href="#role_Blob" title="go to top of document">method reverse<a class="raku-anchor" title="direct link" href="#method_reverse">§</a></a></h2> <!-- defnmark method_reverse 2 --> <div class="raku-code raku-lang"> <button class="copy-code" title="Copy code"><i class="far fa-clipboard"></i></button> <label>Raku highlighting</label> <div> <pre class="nohighlights"><span class="highlite-KEYWORD">method</span> <span class="highlite-ROUTINE">reverse</span>(Blob:D: <span class="highlite-KEYWORD">--&gt;</span> Blob:D)</pre> </div> </div> <p>Returns a Blob with all elements in reversed order.</p> <div class="raku-code raku-lang"> <button class="copy-code" title="Copy code"><i class="far fa-clipboard"></i></button> <label>Raku highlighting</label> <div> <pre class="nohighlights"><span class="highlite-ROUTINE">say</span> <span class="highlite-TYPE">Blob</span>.<span class="highlite-ROUTINE">new</span>([1<span class="highlite-OPERATOR">,</span> 2<span class="highlite-OPERATOR">,</span> 3]).<span class="highlite-ROUTINE">reverse</span>; <span class="highlite-COMMENT"># OUTPUT: «Blob:0x&lt;03 02 01&gt;␤» </span><span class="highlite-ROUTINE">say</span> blob16.<span class="highlite-ROUTINE">new</span>([2]).<span class="highlite-ROUTINE">reverse</span>; <span class="highlite-COMMENT"># OUTPUT: «Blob[uint16]:0x&lt;02&gt;␤» </span><span class="highlite-ROUTINE">say</span> blob32.<span class="highlite-ROUTINE">new</span>([16<span class="highlite-OPERATOR">,</span> 32]).<span class="highlite-ROUTINE">reverse</span>; <span class="highlite-COMMENT"># OUTPUT: «Blob[uint32]:0x&lt;20 10&gt;␤»</span></pre> </div> </div> <h1 id="Methods_on_blob8_only_(6.d,_2018.12_and_later)" class="raku-h1"><a href="#role_Blob" title="go to top of document">Methods on blob8 only (6.d, 2018.12 and later)<a class="raku-anchor" title="direct link" href="#Methods_on_blob8_only_(6.d,_2018.12_and_later)">§</a></a></h1> <p>These methods are available on the blob8 (and <code>buf8</code>) types only. They allow low level access to reading bytes from the underlying data and interpreting them in different ways with regards to type (integer or floating point (num)), size (8, 16, 32, 64 or 128 bits), signed or unsigned (for integer values) and endianness (native, little and big endianness). The returned values are always expanded to a 64 bit native value where possible, and to a (big) integer value if that is not possible.</p><p>Endianness must be indicated by using values of the <a href="/type/Endian"><code>Endian</code></a> enum as the <strong>second</strong> parameter to these methods. If no endianness is specified, <code>NativeEndian</code> will be assumed. Other values are <code>LittleEndian</code> and <code>BigEndian</code>.</p> <h2 id="method_read-uint8" class="raku-h2"><a href="#role_Blob" title="go to top of document">method read-uint8<a class="raku-anchor" title="direct link" href="#method_read-uint8">§</a></a></h2> <!-- defnmark method_read-uint8 2 --> <div class="raku-code raku-lang"> <button class="copy-code" title="Copy code"><i class="far fa-clipboard"></i></button> <label>Raku highlighting</label> <div> <pre class="nohighlights"><span class="highlite-KEYWORD">method</span> <span class="highlite-ROUTINE">read-uint8</span>(blob8:D: uint <span class="highlite-NAME_SCALAR">$pos</span><span class="highlite-OPERATOR">,</span> <span class="highlite-NAME_SCALAR">$endian</span> <span class="highlite-OPERATOR">=</span> NativeEndian <span class="highlite-KEYWORD">--&gt;</span> uint)</pre> </div> </div> <p>Returns an unsigned native integer value for the byte at the given position. The <code>$endian</code> parameter has no meaning, but is available for consistency.</p> <h2 id="method_read-int8" class="raku-h2"><a href="#role_Blob" title="go to top of document">method read-int8<a class="raku-anchor" title="direct link" href="#method_read-int8">§</a></a></h2> <!-- defnmark method_read-int8 2 --> <div class="raku-code raku-lang"> <button class="copy-code" title="Copy code"><i class="far fa-clipboard"></i></button> <label>Raku highlighting</label> <div> <pre class="nohighlights"><span class="highlite-KEYWORD">method</span> <span class="highlite-ROUTINE">read-int8</span>(blob8:D: uint <span class="highlite-NAME_SCALAR">$pos</span><span class="highlite-OPERATOR">,</span> <span class="highlite-NAME_SCALAR">$endian</span> <span class="highlite-OPERATOR">=</span> NativeEndian <span class="highlite-KEYWORD">--&gt;</span> <span class="highlite-TYPE">int</span>)</pre> </div> </div> <p>Returns a native <code>int</code> value for the byte at the given position. The <code>$endian</code> parameter has no meaning, but is available for consistency.</p> <h2 id="method_read-uint16" class="raku-h2"><a href="#role_Blob" title="go to top of document">method read-uint16<a class="raku-anchor" title="direct link" href="#method_read-uint16">§</a></a></h2> <!-- defnmark method_read-uint16 2 --> <div class="raku-code raku-lang"> <button class="copy-code" title="Copy code"><i class="far fa-clipboard"></i></button> <label>Raku highlighting</label> <div> <pre class="nohighlights"><span class="highlite-KEYWORD">method</span> <span class="highlite-ROUTINE">read-uint16</span>(blob8:D: uint <span class="highlite-NAME_SCALAR">$pos</span><span class="highlite-OPERATOR">,</span> <span class="highlite-NAME_SCALAR">$endian</span> <span class="highlite-OPERATOR">=</span> NativeEndian <span class="highlite-KEYWORD">--&gt;</span> uint)</pre> </div> </div> <p>Returns a native <code>uint</code> value for the <strong>two</strong> bytes starting at the given position.</p> <h2 id="method_read-int16" class="raku-h2"><a href="#role_Blob" title="go to top of document">method read-int16<a class="raku-anchor" title="direct link" href="#method_read-int16">§</a></a></h2> <!-- defnmark method_read-int16 2 --> <div class="raku-code raku-lang"> <button class="copy-code" title="Copy code"><i class="far fa-clipboard"></i></button> <label>Raku highlighting</label> <div> <pre class="nohighlights"><span class="highlite-KEYWORD">method</span> <span class="highlite-ROUTINE">read-int16</span>(blob8:D: uint <span class="highlite-NAME_SCALAR">$pos</span><span class="highlite-OPERATOR">,</span> <span class="highlite-NAME_SCALAR">$endian</span> <span class="highlite-OPERATOR">=</span> NativeEndian <span class="highlite-KEYWORD">--&gt;</span> <span class="highlite-TYPE">int</span>)</pre> </div> </div> <p>Returns a native <code>int</code> value for the <strong>two</strong> bytes starting at the given position.</p> <h2 id="method_read-uint32" class="raku-h2"><a href="#role_Blob" title="go to top of document">method read-uint32<a class="raku-anchor" title="direct link" href="#method_read-uint32">§</a></a></h2> <!-- defnmark method_read-uint32 2 --> <div class="raku-code raku-lang"> <button class="copy-code" title="Copy code"><i class="far fa-clipboard"></i></button> <label>Raku highlighting</label> <div> <pre class="nohighlights"><span class="highlite-KEYWORD">method</span> <span class="highlite-ROUTINE">read-uint32</span>(blob8:D: uint <span class="highlite-NAME_SCALAR">$pos</span><span class="highlite-OPERATOR">,</span> <span class="highlite-NAME_SCALAR">$endian</span> <span class="highlite-OPERATOR">=</span> NativeEndian <span class="highlite-KEYWORD">--&gt;</span> uint)</pre> </div> </div> <p>Returns a native <code>uint</code> value for the <strong>four</strong> bytes starting at the given position.</p> <h2 id="method_read-int32" class="raku-h2"><a href="#role_Blob" title="go to top of document">method read-int32<a class="raku-anchor" title="direct link" href="#method_read-int32">§</a></a></h2> <!-- defnmark method_read-int32 2 --> <div class="raku-code raku-lang"> <button class="copy-code" title="Copy code"><i class="far fa-clipboard"></i></button> <label>Raku highlighting</label> <div> <pre class="nohighlights"><span class="highlite-KEYWORD">method</span> <span class="highlite-ROUTINE">read-int32</span>(blob8:D: uint <span class="highlite-NAME_SCALAR">$pos</span><span class="highlite-OPERATOR">,</span> <span class="highlite-NAME_SCALAR">$endian</span> <span class="highlite-OPERATOR">=</span> NativeEndian <span class="highlite-KEYWORD">--&gt;</span> <span class="highlite-TYPE">int</span>)</pre> </div> </div> <p>Returns a native <code>int</code> value for the <strong>four</strong> bytes starting at the given position.</p> <h2 id="method_read-uint64" class="raku-h2"><a href="#role_Blob" title="go to top of document">method read-uint64<a class="raku-anchor" title="direct link" href="#method_read-uint64">§</a></a></h2> <!-- defnmark method_read-uint64 2 --> <div class="raku-code raku-lang"> <button class="copy-code" title="Copy code"><i class="far fa-clipboard"></i></button> <label>Raku highlighting</label> <div> <pre class="nohighlights"><span class="highlite-KEYWORD">method</span> <span class="highlite-ROUTINE">read-uint64</span>(blob8:D: uint <span class="highlite-NAME_SCALAR">$pos</span><span class="highlite-OPERATOR">,</span> <span class="highlite-NAME_SCALAR">$endian</span> <span class="highlite-OPERATOR">=</span> NativeEndian <span class="highlite-KEYWORD">--&gt;</span> UInt:D)</pre> </div> </div> <p>Returns an unsigned integer value for the <strong>eight</strong> bytes starting at the given position.</p> <h2 id="method_read-int64" class="raku-h2"><a href="#role_Blob" title="go to top of document">method read-int64<a class="raku-anchor" title="direct link" href="#method_read-int64">§</a></a></h2> <!-- defnmark method_read-int64 2 --> <div class="raku-code raku-lang"> <button class="copy-code" title="Copy code"><i class="far fa-clipboard"></i></button> <label>Raku highlighting</label> <div> <pre class="nohighlights"><span class="highlite-KEYWORD">method</span> <span class="highlite-ROUTINE">read-int64</span>(blob8:D: uint <span class="highlite-NAME_SCALAR">$pos</span><span class="highlite-OPERATOR">,</span> <span class="highlite-NAME_SCALAR">$endian</span> <span class="highlite-OPERATOR">=</span> NativeEndian <span class="highlite-KEYWORD">--&gt;</span> <span class="highlite-TYPE">int</span>)</pre> </div> </div> <p>Returns a native <code>int</code> value for the <strong>eight</strong> bytes starting at the given position.</p> <h2 id="method_read-uint128" class="raku-h2"><a href="#role_Blob" title="go to top of document">method read-uint128<a class="raku-anchor" title="direct link" href="#method_read-uint128">§</a></a></h2> <!-- defnmark method_read-uint128 2 --> <div class="raku-code raku-lang"> <button class="copy-code" title="Copy code"><i class="far fa-clipboard"></i></button> <label>Raku highlighting</label> <div> <pre class="nohighlights"><span class="highlite-KEYWORD">method</span> <span class="highlite-ROUTINE">read-uint128</span>(blob8:D: uint <span class="highlite-NAME_SCALAR">$pos</span><span class="highlite-OPERATOR">,</span> <span class="highlite-NAME_SCALAR">$endian</span> <span class="highlite-OPERATOR">=</span> NativeEndian <span class="highlite-KEYWORD">--&gt;</span> UInt:D)</pre> </div> </div> <p>Returns an unsigned integer value for the <strong>sixteen</strong> bytes starting at the given position.</p> <h2 id="method_read-int128" class="raku-h2"><a href="#role_Blob" title="go to top of document">method read-int128<a class="raku-anchor" title="direct link" href="#method_read-int128">§</a></a></h2> <!-- defnmark method_read-int128 2 --> <div class="raku-code raku-lang"> <button class="copy-code" title="Copy code"><i class="far fa-clipboard"></i></button> <label>Raku highlighting</label> <div> <pre class="nohighlights"><span class="highlite-KEYWORD">method</span> <span class="highlite-ROUTINE">read-int128</span>(blob8:D: uint <span class="highlite-NAME_SCALAR">$pos</span><span class="highlite-OPERATOR">,</span> <span class="highlite-NAME_SCALAR">$endian</span> <span class="highlite-OPERATOR">=</span> NativeEndian <span class="highlite-KEYWORD">--&gt;</span> Int:D)</pre> </div> </div> <p>Returns an integer value for the <strong>sixteen</strong> bytes starting at the given position.</p> <h2 id="method_read-num32" class="raku-h2"><a href="#role_Blob" title="go to top of document">method read-num32<a class="raku-anchor" title="direct link" href="#method_read-num32">§</a></a></h2> <!-- defnmark method_read-num32 2 --> <div class="raku-code raku-lang"> <button class="copy-code" title="Copy code"><i class="far fa-clipboard"></i></button> <label>Raku highlighting</label> <div> <pre class="nohighlights"><span class="highlite-KEYWORD">method</span> <span class="highlite-ROUTINE">read-num32</span>(blob8:D: uint <span class="highlite-NAME_SCALAR">$pos</span><span class="highlite-OPERATOR">,</span> <span class="highlite-NAME_SCALAR">$endian</span> <span class="highlite-OPERATOR">=</span> NativeEndian <span class="highlite-KEYWORD">--&gt;</span> <span class="highlite-TYPE">int</span>)</pre> </div> </div> <p>Returns a native <code>num</code> value for the <strong>four</strong> bytes starting at the given position.</p> <h2 id="method_read-num64" class="raku-h2"><a href="#role_Blob" title="go to top of document">method read-num64<a class="raku-anchor" title="direct link" href="#method_read-num64">§</a></a></h2> <!-- defnmark method_read-num64 2 --> <div class="raku-code raku-lang"> <button class="copy-code" title="Copy code"><i class="far fa-clipboard"></i></button> <label>Raku highlighting</label> <div> <pre class="nohighlights"><span class="highlite-KEYWORD">method</span> <span class="highlite-ROUTINE">read-num64</span>(blob8:D: uint <span class="highlite-NAME_SCALAR">$pos</span><span class="highlite-OPERATOR">,</span> <span class="highlite-NAME_SCALAR">$endian</span> <span class="highlite-OPERATOR">=</span> NativeEndian <span class="highlite-KEYWORD">--&gt;</span> <span class="highlite-TYPE">int</span>)</pre> </div> </div> <p>Returns a native <code>num</code> value for the <strong>eight</strong> bytes starting at the given position.</p> <h1 id="Methods_on_blob8_only_(6.d,_2019.03_and_later)" class="raku-h1"><a href="#role_Blob" title="go to top of document">Methods on blob8 only (6.d, 2019.03 and later)<a class="raku-anchor" title="direct link" href="#Methods_on_blob8_only_(6.d,_2019.03_and_later)">§</a></a></h1> <h2 id="method_read-ubits" class="raku-h2"><a href="#role_Blob" title="go to top of document">method read-ubits<a class="raku-anchor" title="direct link" href="#method_read-ubits">§</a></a></h2> <!-- defnmark method_read-ubits 2 --> <div class="raku-code raku-lang"> <button class="copy-code" title="Copy code"><i class="far fa-clipboard"></i></button> <label>Raku highlighting</label> <div> <pre class="nohighlights"><span class="highlite-KEYWORD">method</span> <span class="highlite-ROUTINE">read-ubits</span>(blob8:D: uint <span class="highlite-NAME_SCALAR">$pos</span><span class="highlite-OPERATOR">,</span> uint <span class="highlite-NAME_SCALAR">$bits</span> <span class="highlite-KEYWORD">--&gt;</span> UInt:D)</pre> </div> </div> <p>Returns an unsigned integer value for the <strong>bits</strong> from the given <strong>bit</strong> offset and given number of bits. The endianness of the bits is assumed to be <code>BigEndian</code>.</p> <h2 id="method_read-bits" class="raku-h2"><a href="#role_Blob" title="go to top of document">method read-bits<a class="raku-anchor" title="direct link" href="#method_read-bits">§</a></a></h2> <!-- defnmark method_read-bits 2 --> <div class="raku-code raku-lang"> <button class="copy-code" title="Copy code"><i class="far fa-clipboard"></i></button> <label>Raku highlighting</label> <div> <pre class="nohighlights"><span class="highlite-KEYWORD">method</span> <span class="highlite-ROUTINE">read-bits</span>(blob8:D: uint <span class="highlite-NAME_SCALAR">$pos</span><span class="highlite-OPERATOR">,</span> uint <span class="highlite-NAME_SCALAR">$bits</span> <span class="highlite-KEYWORD">--&gt;</span> Int:D)</pre> </div> </div> <p>Returns a signed integer value for the <strong>bits</strong> from the given <strong>bit</strong> offset and given number of bits. The endianness of the bits is assumed to be <code>BigEndian</code>.</p> <h2 id="method_Buf" class="raku-h2"><a href="#role_Blob" title="go to top of document">method Buf<a class="raku-anchor" title="direct link" href="#method_Buf">§</a></a></h2> <!-- defnmark method_Buf 2 --> <div class="raku-code raku-lang"> <button class="copy-code" title="Copy code"><i class="far fa-clipboard"></i></button> <label>Raku highlighting</label> <div> <pre class="nohighlights"><span class="highlite-KEYWORD">method</span> <span class="highlite-TYPE">Buf</span>(Blob:D: <span class="highlite-KEYWORD">--&gt;</span> Buf:D)</pre> </div> </div> <p>Available as of the 2021.06 Rakudo compiler release.</p><p>Coerces the invocant into a mutable <a href="/type/Buf"><code>Buf</code></a> object.</p> <h1 id="typegraphrelations" class="raku-h1"><a href="#" title="go to top of document">Typegraph<a class="raku-anchor" title="direct link" href="#typegraphrelations">§</a></a></h1> <figure class="typegraph" > <figcaption>Type relations for <code>Blob</code></figcaption> <svg width="293pt" height="188pt" viewBox="0.00 0.00 292.95 188.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 184)"> <title>raku&#45;type&#45;graph</title> <polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-184 288.95,-184 288.95,4 -4,4"/> <!-- Blob --> <g id="node1" class="node"> <title>Blob</title> <g id="a_node1"><a xlink:href="/type/Blob" xlink:title="Blob"> <ellipse fill="none" stroke="#6666ff" cx="168.95" cy="-90" rx="30.59" ry="18"/> <text text-anchor="middle" x="168.95" y="-86.3" font-family="FreeSans" font-size="14.00" fill="#6666ff">Blob</text> </a> </g> </g> <!-- Positional --> <g id="node2" class="node"> <title>Positional</title> <g id="a_node2"><a xlink:href="/type/Positional" xlink:title="Positional"> <ellipse fill="none" stroke="#6666ff" cx="53.95" cy="-162" rx="53.89" ry="18"/> <text text-anchor="middle" x="53.95" y="-158.3" font-family="FreeSans" font-size="14.00" fill="#6666ff">Positional</text> </a> </g> </g> <!-- Blob&#45;&gt;Positional --> <g id="edge3" class="edge"> <title>Blob&#45;&gt;Positional</title> <path fill="none" stroke="#6666ff" d="M148.39,-103.51C131.47,-113.81 107.15,-128.62 87.42,-140.62"/> <polygon fill="#6666ff" stroke="#6666ff" points="85.45,-137.73 78.73,-145.91 89.09,-143.7 85.45,-137.73"/> </g> <!-- Stringy --> <g id="node3" class="node"> <title>Stringy</title> <g id="a_node3"><a xlink:href="/type/Stringy" xlink:title="Stringy"> <ellipse fill="none" stroke="#6666ff" cx="168.95" cy="-162" rx="43.59" ry="18"/> <text text-anchor="middle" x="168.95" y="-158.3" font-family="FreeSans" font-size="14.00" fill="#6666ff">Stringy</text> </a> </g> </g> <!-- Blob&#45;&gt;Stringy --> <g id="edge4" class="edge"> <title>Blob&#45;&gt;Stringy</title> <path fill="none" stroke="#6666ff" d="M168.95,-108.3C168.95,-116.02 168.95,-125.29 168.95,-133.89"/> <polygon fill="#6666ff" stroke="#6666ff" points="165.45,-133.9 168.95,-143.9 172.45,-133.9 165.45,-133.9"/> </g> <!-- Mu --> <g id="node4" class="node"> <title>Mu</title> <g id="a_node4"><a xlink:href="/type/Mu" xlink:title="Mu"> <ellipse fill="none" stroke="#000000" cx="257.95" cy="-162" rx="27" ry="18"/> <text text-anchor="middle" x="257.95" y="-158.3" font-family="FreeSans" font-size="14.00" fill="#000000">Mu</text> </a> </g> </g> <!-- Any --> <g id="node5" class="node"> <title>Any</title> <g id="a_node5"><a xlink:href="/type/Any" xlink:title="Any"> <ellipse fill="none" stroke="#000000" cx="251.95" cy="-90" rx="28.7" ry="18"/> <text text-anchor="middle" x="251.95" y="-86.3" font-family="FreeSans" font-size="14.00" fill="#000000">Any</text> </a> </g> </g> <!-- Any&#45;&gt;Mu --> <g id="edge1" class="edge"> <title>Any&#45;&gt;Mu</title> <path fill="none" stroke="#000000" d="M253.43,-108.3C254.09,-116.02 254.88,-125.29 255.62,-133.89"/> <polygon fill="#000000" stroke="#000000" points="252.14,-134.23 256.48,-143.9 259.11,-133.63 252.14,-134.23"/> </g> <!-- utf8 --> <g id="node6" class="node"> <title>utf8</title> <g id="a_node6"><a xlink:href="/type/utf8" xlink:title="utf8"> <ellipse fill="none" stroke="#000000" cx="243.95" cy="-18" rx="29.5" ry="18"/> <text text-anchor="middle" x="243.95" y="-14.3" font-family="FreeSans" font-size="14.00" fill="#000000">utf8</text> </a> </g> </g> <!-- utf8&#45;&gt;Blob --> <g id="edge5" class="edge"> <title>utf8&#45;&gt;Blob</title> <path fill="none" stroke="#6666ff" d="M228.41,-33.5C217.92,-43.29 203.89,-56.39 192.09,-67.4"/> <polygon fill="#6666ff" stroke="#6666ff" points="189.65,-64.89 184.72,-74.27 194.42,-70.01 189.65,-64.89"/> </g> <!-- utf8&#45;&gt;Any --> <g id="edge2" class="edge"> <title>utf8&#45;&gt;Any</title> <path fill="none" stroke="#000000" d="M245.92,-36.3C246.8,-44.02 247.86,-53.29 248.85,-61.89"/> <polygon fill="#000000" stroke="#000000" points="245.38,-62.36 249.99,-71.9 252.33,-61.56 245.38,-62.36"/> </g> <!-- Buf --> <g id="node7" class="node"> <title>Buf</title> <g id="a_node7"><a xlink:href="/type/Buf" xlink:title="Buf"> <ellipse fill="none" stroke="#6666ff" cx="168.95" cy="-18" rx="27" ry="18"/> <text text-anchor="middle" x="168.95" y="-14.3" font-family="FreeSans" font-size="14.00" fill="#6666ff">Buf</text> </a> </g> </g> <!-- Buf&#45;&gt;Blob --> <g id="edge6" class="edge"> <title>Buf&#45;&gt;Blob</title> <path fill="none" stroke="#6666ff" d="M168.95,-36.3C168.95,-44.02 168.95,-53.29 168.95,-61.89"/> <polygon fill="#6666ff" stroke="#6666ff" points="165.45,-61.9 168.95,-71.9 172.45,-61.9 165.45,-61.9"/> </g> </g> </svg> <p class="fallback"> <a rel="alternate" href="/assets/typegraphs/Blob.svg"> Expand chart above </a></p> </figure> </div></div></section> </div> </div> </div> <footer class="footer main-footer"> <div class="container px-4"> <nav class="level"> <div class="level-left"> <div class="level-item"> <a href="/about">About</a> </div> <div class="level-item"> <a id="toggle-theme">Toggle theme</a> </div> <div class="level-item" title="5f3c39df5 2024-08-08"> <a>Commit</a> </div> </div> <div class="level-right"> <div class="level-item"> <a href="/license">License</a> </div> </div> </nav> </div> </footer> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10