summaryrefslogtreecommitdiff
path: root/util.rkt
diff options
context:
space:
mode:
authorMatthias Andreas Benkard <code@mail.matthias.benkard.de>2011-08-15 23:49:20 +0200
committerMatthias Andreas Benkard <code@mail.matthias.benkard.de>2011-08-15 23:49:20 +0200
commit3aaa523f41df21b493133c4f3580c4cfed1611ff (patch)
treeacec99251a78478f6742ffd046a13c98f48014b0 /util.rkt
parent978197a92b8ac2959532dea20c3c0632c0149a82 (diff)
Move integer->bytes to util.rkt.
Diffstat (limited to 'util.rkt')
-rw-r--r--util.rkt29
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)))))