On Tuesday, 31 October 2023 at 10:24:56 UTC, Jonathan M Davis wrote:
On Tuesday, October 31, 2023 4:09:53 AM MDT Salih Dincer via Digitalmars-d- learn wrote:
Hello,

Why isn't Endian.littleEndian the default setting for read() in
std.bitmanip?

Why would you expect little endian to be the default? The typical thing to do when encoding integral values in a platform-agnostic manner is to use big endian, not little endian...

Because when we create a structure with a Union, it does reverse insertion with according to the static array(bytes) index; I showed this above. I also have a convenience template like this:

```d
template readBytes(T, bool big = false, R)
{        // pair endian version 2.0
  import bop = std.bitmanip;

  static if(big)
    enum E = bop.Endian.bigEndian;
  else
    enum E = bop.Endian.littleEndian;

  auto readBytes(ref R dat)
   => bop.read!(T, E)(dat);
}
```
Sorry to give you extra engage because I already solved the problem with readBytes(). Thank you for your answer, but there is 1 more problem, or even 2! The read() in the library, which is 2nd function, conflicts with std.write. Yeah, there are many solutions to this, but what it does is just read bytes. However, you can insert 4 ushorts into one ulong.

Don't you think the name of the function should be readBytes, not read? Because it doesn't work with any type other than ubyte[]!

SDB@79

Reply via email to