# Better way to get Nat8 from Time?

**URL:** https://forum.dfinity.org/t/better-way-to-get-nat8-from-time/9430
**Category:** Language Support
**Created:** [December 7, 2021, 6:47pm UTC](https://forum.dfinity.org/t/better-way-to-get-nat8-from-time/9430 "2021-12-07T18:47:23Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![anon98822045](https://avatars.discourse-cdn.com/v4/letter/a/ce73a5/32.png) [@anon98822045](https://forum.dfinity.org/u/anon98822045)
#### Post date: [December 7, 2021, 6:47pm UTC](https://forum.dfinity.org/t/better-way-to-get-nat8-from-time/9430/1 "2021-12-07T18:47:23Z")

</div>

There must be a better way to do this! Thanks!

```auto
      // 0 - we update the epoch
      if (count == 0) {
        let dig = SHA256.Digest();
        dig.write(epoch);

        // Time bytes
        let time : Nat64 = Nat64.fromIntWrap(Time.now());
        let t1 : Nat8 = Nat8.fromNat(Nat64.toNat((time << 0) & 255));
        let t2 : Nat8 = Nat8.fromNat(Nat64.toNat((time << 8) & 255));
        let t3 : Nat8 = Nat8.fromNat(Nat64.toNat((time << 16) & 255));
        let t4 : Nat8 = Nat8.fromNat(Nat64.toNat((time << 24) & 255));
        dig.write([t1, t2, t3, t4]);

        epoch := dig.sum();
      };

```

---

<div class="post-metadata">

### Author: ![anon98822045](https://avatars.discourse-cdn.com/v4/letter/a/ce73a5/32.png) [@anon98822045](https://forum.dfinity.org/u/anon98822045)
#### Post date: [December 7, 2021, 6:51pm UTC](https://forum.dfinity.org/t/better-way-to-get-nat8-from-time/9430/2 "2021-12-07T18:51:53Z")

</div>

```auto
        // Time bytes
        let time : Nat64 = Nat64.fromIntWrap(Time.now());
        let buf = Buffer.Buffer<Nat8>(8);
        for (i in Iter.range(0, 7)) {
          let b = Nat64.fromNat(i*8);
          let n = Nat8.fromNat(Nat64.toNat((time << b) & 255));
          buf.add(n);
        };
        dig.write(buf.toArray());

```

slightly better, but all the conversions are crazy and took me a while to figure out

---

<div class="post-metadata">

### Author: ![claudio](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.dfinity.org/claudio/32/322_2.png) [@claudio](https://forum.dfinity.org/u/claudio)
#### Post date: [December 9, 2021, 2:40pm UTC](https://forum.dfinity.org/t/better-way-to-get-nat8-from-time/9430/3 "2021-12-09T14:40:16Z")

</div>

I think we should probably provide a toBlob for each scalar type (littelendian) and, separately, direct indexing into Blobs.

Would that be better?

I actually have most of the compiler support for that available already.

---

<div class="post-metadata">

### Author: ![anon98822045](https://avatars.discourse-cdn.com/v4/letter/a/ce73a5/32.png) [@anon98822045](https://forum.dfinity.org/u/anon98822045)
#### Post date: [December 10, 2021, 7:19pm UTC](https://forum.dfinity.org/t/better-way-to-get-nat8-from-time/9430/4 "2021-12-10T19:19:55Z")

</div>

yes! I guess- I’ll trust your judgement but I just dont like writing code like that with multiple conversion functions.

Sorry, probably ignore this I realised when I wrote this I understood less about motoko than I do now. The main thing was that Nat \>\> Nat didn’t work and Nat8 \>\> Nat8 did . Wasn’t clear.
