source: project/release/5/string-utils/trunk/to-hex.scm @ 39956

Last change on this file since 39956 was 39956, checked in by Kon Lovett, 2 months ago

remove unused declarations

File size: 2.6 KB
Line 
1;;;; to-hex.scm  -*- Scheme -*-
2;;;; Kon Lovett, Jul '18
3;;;; Kon Lovett, Aug '17
4;;;; Kon Lovett, Aug '10
5
6#>
7static void
8bv_to_hex( uint8_t *out, uint8_t *in, int off, int len )
9{
10  static char digits[] = "0123456789abcdef";
11
12  if (len <= 0) return;
13
14  in += off;
15  while (len--) {
16    *out++ = digits[ *in >> 4 ];
17    *out++ = digits[ *in++ & 0x0f ];
18  }
19}
20
21static void
22hex_to_bv( uint8_t *out, uint8_t *in, int off, int len )
23{
24# define hex_nibble(c)  (isdigit(c) ? ((c) - '0') : (((c) - 'a') + 10))
25
26  if (len <= 0) return;
27
28  in += off;
29  while (0 <= (len -= 2)) {
30    unsigned char in0 = tolower( in[0] );
31    unsigned char in1 = tolower( in[1] );
32    *out++ = (hex_nibble( in0 ) << 4) | hex_nibble( in1 );
33    in += 2;
34  }
35
36# undef hex_nibble
37}
38<#
39
40(module to-hex
41
42(;export
43  ;
44  mem_to_hex
45  s8vec_to_hex
46  u8vec_to_hex
47  blob_to_hex
48  str_to_hex
49  ;
50  hex_to_str
51  hex_to_blob)
52
53(import scheme)
54(import (chicken base))
55(import (chicken type))
56(import (chicken foreign))
57
58;;
59
60(: str_to_hex (string string fixnum fixnum -> string))
61(: blob_to_hex (string blob fixnum fixnum -> string))
62(: u8vec_to_hex (string u8vector fixnum fixnum -> string))
63(: s8vec_to_hex (string s8vector fixnum fixnum -> string))
64(: mem_to_hex (string pointer fixnum fixnum -> string))
65(: hex_to_str (string string fixnum fixnum -> string))
66(: hex_to_blob (blob string fixnum fixnum -> blob))
67
68;;
69
70(define C_str_to_hex
71  (foreign-lambda void "bv_to_hex" nonnull-scheme-pointer nonnull-scheme-pointer int int))
72
73(define C_blob_to_hex
74  (foreign-lambda void "bv_to_hex" nonnull-scheme-pointer nonnull-blob int int))
75
76(define C_u8vec_to_hex
77  (foreign-lambda void "bv_to_hex" nonnull-scheme-pointer nonnull-u8vector int int))
78
79(define C_s8vec_to_hex
80  (foreign-lambda*
81      void ((nonnull-scheme-pointer out) (nonnull-s8vector in) (int off) (int len))
82    "bv_to_hex( out, ((uint8_t *) in), off, len );"))
83
84(define C_mem_to_hex
85  (foreign-lambda void "bv_to_hex" nonnull-scheme-pointer nonnull-c-pointer int int))
86
87;;
88
89(define C_hex_to_str
90  (foreign-lambda void "hex_to_bv" nonnull-scheme-pointer nonnull-scheme-pointer int int))
91
92;;
93
94(define (str_to_hex out in off len)
95  (C_str_to_hex out in off len)
96  out )
97
98(define (blob_to_hex out in off len)
99  (C_blob_to_hex out in off len)
100  out )
101
102(define (u8vec_to_hex out in off len)
103  (C_u8vec_to_hex out in off len)
104  out )
105
106(define (s8vec_to_hex out in off len)
107  (C_s8vec_to_hex out in off len)
108  out )
109
110(define (mem_to_hex out in off len)
111  (C_mem_to_hex out in off len)
112  out )
113
114;;
115
116(define (hex_to_str out in off len)
117  (C_hex_to_str out in off len)
118  out )
119
120(define (hex_to_blob out in off len)
121  (C_hex_to_str out in off len)
122  out )
123
124) ;module to-hex
Note: See TracBrowser for help on using the repository browser.