Encode integer array as base64 int64 string (fixed-length output)
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | values(:) | |||
| character(len=256), | intent(out) | :: | output |
subroutine encode_int64_base64(values, output) !! Encode integer array as base64 int64 string (fixed-length output) use iso_fortran_env, only: int8, int64 implicit none integer, intent(in) :: values(:) character(256), intent(out) :: output integer(int8), allocatable :: bytes(:) integer(int64) :: ival64 integer :: i, j, n, nbytes n = size(values) nbytes = n * 8 allocate(bytes(nbytes)) do i = 1, n ival64 = int(values(i), int64) do j = 0, 7 bytes((i-1)*8 + j + 1) = & int(iand(ishft(ival64, -j*8), int(255, int64)), int8) end do end do call base64_encode_bytes_fixed(bytes, nbytes, output) deallocate(bytes) end subroutine encode_int64_base64