<div dir="ltr">I&#39;m not sure what you mean by &quot;I need the buffer to be a vector /.../&quot; but perhaps this may be of some help:<div><br></div><div><div>struct S {</div><div>    var x: Float</div><div>    var y: Float</div><div>    var z: Float</div><div>    var r: UInt8</div><div>    var g: UInt8</div><div>    var b: UInt8</div><div>    var a: UInt8</div><div>}</div><div>var buf = S(x: 0.1, y: 1.2, z: 2.3, r: 11, g: 22, b: 33, a: 44)</div><div>print(MemoryLayout&lt;S&gt;.stride) // 16</div><div>withUnsafeMutableBytes(of: &amp;buf) { ptr in</div><div>    print(&quot;x:&quot;, ptr.load(fromByteOffset: 0, as: Float.self)) // 0.1</div><div>    print(&quot;y:&quot;, ptr.load(fromByteOffset: 4, as: Float.self)) // 1.2</div><div>    print(&quot;z:&quot;, ptr.load(fromByteOffset: 8, as: Float.self)) // 2.3</div><div>    print(&quot;r:&quot;, ptr.load(fromByteOffset: 12, as: UInt8.self)) // 11</div><div>    print(&quot;g:&quot;, ptr.load(fromByteOffset: 13, as: UInt8.self)) // 22</div><div>    print(&quot;b:&quot;, ptr.load(fromByteOffset: 14, as: UInt8.self)) // 33</div><div>    print(&quot;a:&quot;, ptr.load(fromByteOffset: 15, as: UInt8.self)) // 44</div><div>}</div></div><div><br></div><div>NOTE however that the memory layout of Swift-structs is not guaranteed to remain like this and is thus not future-proof, although I think that if/when things changes, there will be some way to tell the compiler that you want the memory to be this &quot;expected&quot; &quot;C-like&quot; layout.</div><div><br></div><div>/Jens</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jan 10, 2018 at 10:03 PM, Kelvin Ma via swift-users <span dir="ltr">&lt;<a href="mailto:swift-users@swift.org" target="_blank">swift-users@swift.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div>I want to create a buffer with the layout <br></div><div><br></div><span style="font-family:monospace,monospace">0           4           8           12      13      14      15      16<br>[   x:Float   |</span><span style="font-family:monospace,monospace"><span style="font-family:monospace,monospace">   y:Float   </span>|</span><span style="font-family:monospace,monospace"><span style="font-family:monospace,monospace">   z:Float   </span>| r:UInt8 | g:UInt8 | b:UInt8 | _:UInt8 ]</span><br></div><div><br></div>Normally, I’d use <span style="font-family:monospace,monospace">UnsafeRawBufferPointer</span> for this, but I need the buffer to be a vector (i.e. with <span style="font-family:monospace,monospace">append(_:)</span>), and for it to return a Swift-managed <span style="font-family:monospace,monospace">Array&lt;UInt8&gt;</span>. How should I do this? The project does not use Foundation.<br></div>
<br>______________________________<wbr>_________________<br>
swift-users mailing list<br>
<a href="mailto:swift-users@swift.org">swift-users@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-users" rel="noreferrer" target="_blank">https://lists.swift.org/<wbr>mailman/listinfo/swift-users</a><br>
<br></blockquote></div><br></div>