diff options
Diffstat (limited to 'util.rkt')
-rw-r--r-- | util.rkt | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/util.rkt b/util.rkt new file mode 100644 index 0000000..5c1f2d3 --- /dev/null +++ b/util.rkt @@ -0,0 +1,29 @@ +#lang typed/racket +;;; Copyright 2011, Matthias Andreas Benkard. +;;; +;;;----------------------------------------------------------------------------- +;;; This program is free software: you can redistribute it and/or modify +;;; it under the terms of the GNU Affero General Public License as published by +;;; the Free Software Foundation, either version 3 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU Affero General Public License for more details. +;;; +;;; You should have received a copy of the GNU Affero General Public License +;;; along with this program. If not, see <http://www.gnu.org/licenses/>. +;;;----------------------------------------------------------------------------- +;;; + +(provide integer->bytes) + +(define: (integer->bytes [x : Exact-Nonnegative-Integer]) : Bytes + (let: loop : Bytes + ([acc : (Listof Byte) (list)] + [x : Exact-Nonnegative-Integer x]) + (if (zero? x) + (list->bytes acc) + (loop (cons (bitwise-and #xff x) acc) + (arithmetic-shift x -8))))) |