home *** CD-ROM | disk | FTP | other *** search
- ############################################################################
- #
- # File: bincvt.icn
- #
- # Subject: Procedures to convert binary data
- #
- # Author: Robert J. Alexander
- #
- # Date: December 5, 1989
- #
- ###########################################################################
- #
- # unsigned() -- Converts binary byte string into unsigned integer.
- # Detects overflow if number is too large.
- #
- # This procedure is normally used for processing of binary data
- # read from a file.
- #
- #
- # raw() -- Puts raw bits of characters of string s into an integer. If
- # the size of s is less than the size of an integer, the bytes are put
- # into the low order part of the integer, with the remaining high order
- # bytes filled with zero. If the string is too large, the most
- # significant bytes will be lost -- no overflow detection.
- #
- # This procedure is normally used for processing of binary data
- # read from a file.
- #
- #
- # rawstring() -- Creates a string consisting of the raw bits in the low
- # order "size" bytes of integer i.
- #
- # This procedure is normally used for processing of binary data
- # to be written to a file.
- #
- ############################################################################
-
- procedure unsigned(s)
- local i
- i := 0
- every i := ord(!s) + i * 256
- return i
- end
-
- procedure raw(s)
- local i
- i := 0
- every i := ior(ord(!s),ishift(i,8))
- return i
- end
-
- procedure rawstring(i,size)
- local s
- s := ""
- every 1 to size do {
- s := char(iand(i,16rFF)) || s
- i := ishift(i,-8)
- }
- return s
- end
-