Here is one which using io_lib extensively:<br><br>dump_hex2(L) -> dump_hex2(0, L, []).<br><br>dump_hex2(_, [], R) -> lists:reverse(R);<br>dump_hex2(N,<br>          [B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13,<br>
           B14, B15, B16<br>           | T],<br>          R) -><br>    Line = dump_line(N,<br>                     [B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13,<br>                      B14, B15, B16]),<br>    dump_hex2(N + 16, T, [Line | R]);<br>
dump_hex2(N, L, R) -><br>    Line = dump_line(N, L), dump_hex2(N, [], [Line | R]).<br><br>dump_line(N, L) -><br>    io_lib:format("~8.16.0b:~-48s - ~s~n",<br>                  [N, [io_lib:format(" ~2.16.0b", [X]) || X <- L],<br>
                   [if X < $\s; X > 126 -> $.;<br>                       true -> X<br>                    end<br>                    || X <- L]]).<br><br><div class="gmail_quote">On Wed, Apr 22, 2009 at 2:03 AM, feiman <span dir="ltr"><<a href="mailto:lfeiman888@gmail.com">lfeiman888@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">hi,All<br>
   I have a function from C,which print out detail hex information<br>
about a buffer,who can help me "translate" it into Erlang?<br>
<br>
when I run<br>
        const char *teststr = "teststr1234567890abcd";<br>
<br>
        dump_hex((const unsigned char *)teststr,strlen(teststr));<br>
<br>
it print out<br>
<br>
00000000: 74 65 73 74 73 74 72 31 32 33 34 35 36 37 38 39 -<br>
teststr123456789<br>
00000010: 30 61 62 63 64                                  - 0abcd<br>
<br>
thanks all in advance<br>
<br>
void dump_hex( const unsigned char *buf, int len)<br>
{<br>
        int i;<br>
        int nlocal;<br>
        const unsigned char *pc;<br>
        char *out;<br>
        const unsigned char *start;<br>
        char c;<br>
        char line[100];<br>
<br>
        start = buf;<br>
<br>
        while (len > 0)<br>
        {<br>
                sprintf(line, "%08x: ", buf - start);<br>
                out = line + 10;<br>
<br>
                for (i = 0, pc = buf, nlocal = len; i < 16; i++, pc++)<br>
                {<br>
                        if (nlocal > 0)<br>
                        {<br>
                                c = *pc;<br>
<br>
                                *out++ = NIBBLE((c >> 4) & 0xF);<br>
                                *out++ = NIBBLE(c & 0xF);<br>
<br>
                                nlocal--;<br>
                        }<br>
                        else<br>
                        {<br>
                                *out++ = ' ';<br>
                                *out++ = ' ';<br>
                        }                       /* end else */<br>
<br>
                        *out++ = ' ';<br>
                }                       /* end for */<br>
<br>
                *out++ = '-';<br>
                *out++ = ' ';<br>
<br>
                for (i = 0, pc = buf, nlocal = len;<br>
                        (i < 16) && (nlocal > 0);<br>
                        i++, pc++, nlocal--)<br>
                {<br>
                        c = *pc;<br>
<br>
                        if ((c < ' ') || (c >= 126))<br>
                        {<br>
                                c = '.';<br>
                        }<br>
<br>
                        *out++ = c;<br>
                }                       /* end for */<br>
<br>
                *out++ = 0;<br>
<br>
                llog(L_NOTICE,"%s", line);<br>
<br>
                buf += 16;<br>
                len -= 16;<br>
        }                               /* end while */<br>
}                               /* end dump */<br>
<br>
_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://www.erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://www.erlang.org/mailman/listinfo/erlang-questions</a><br>
</blockquote></div><br><br clear="all"><br>-- <br>--Hynek (Pichi) Vychodil<br><br>Analyze your data in minutes. Share your insights instantly. Thrill your boss.  Be a data hero!<br>Try Good Data now for free: <a href="http://www.gooddata.com">www.gooddata.com</a><br>