Advertisement
Guest User

Untitled

a guest
Aug 25th, 2019
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.02 KB | None | 0 0
  1. ```scheme
  2. (def (u8vector->uint bv (guard #t))
  3.  
  4. (def (compute bv)
  5. (let ((l (fx- (u8vector-length bv) 1)))
  6. (let loop ((s 0) (i 0))
  7. (if (< i l)
  8. (loop (+ s (* (u8vector-ref bv i) (expt 256 (- l i)))) (+ i 1))
  9. (+ s (* (u8vector-ref bv i) (expt 256 (- l i))))))))
  10.  
  11. (if guard
  12. (if (fx<= (u8vector-length bv) 8)
  13. (compute bv)
  14. (error "Disable guard to compute on u8vectors of length > 8." bv))
  15. (compute bv)))
  16. ```
  17.  
  18. ``` scheme
  19. > (u8vector->uint #u8(0 1))
  20. 1
  21. > (u8vector->uint (make-u8vector 2 #xFF))
  22. 65535
  23. > (u8vector->uint (make-u8vector 8 #xFF))
  24. 18446744073709551615
  25. > (equal? (- (expt 2 64) 1) (u8vector->uint (make-u8vector 8 #xFF)))
  26. #t
  27. > (u8vector->uint (make-u8vector 10 #xFF))
  28. *** ERROR IN (console)@7.1 -- Disable guard to compute on u8vectors of length > 8. #u8(255 255 255 255 255 255 255 255 255 255)
  29. > (u8vector->uint (make-u8vector 10 #xFF) #f)
  30. 1208925819614629174706175
  31. > (equal? (- (expt 2 80) 1) (u8vector->uint (make-u8vector 10 #xFF) #f))
  32. #t
  33. ```
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement