开发者

Conversion from Byte to ASCII in C

Can anyone suggest means of converting a byte array to ASCII in C? Or 开发者_高级运维converting byte array to hex and then to ASCII?

[04/02][Edited]: To rephrase it, I wish to convert bytes to hex and store the converted hex values in a data structure. How should go about it?

Regards, darkie


Well, if you interpret an integer as a char in C, you'll get that ASCII character, as long as it's in range.

int i = 97;
char c = i;

printf("The character of %d is %c\n", i, c);

Prints:

The character of 97 is a

Note that no error checking is done - I assume 0 <= i < 128 (ASCII range).

Otherwise, an array of byte values can be directly interpreted as an ASCII string:

char bytes[] = {97, 98, 99, 100, 101, 0};

printf("The string: %s\n", bytes);

Prints:

The string: abcde

Note the last byte: 0, it's required to terminate the string properly. You can use bytes as any other C string, copy from it, append it to other strings, traverse it, print it, etc.


First of all you should take some more care on the formulation of your questions. It is hard to say what you really want to hear. I think you have some binary blob and want it in a human readable form, e.g. to dump it on the screen for debugging. (I know I'm probably misinterpreting you here).

You can use snprintf(buf, sizeof(buf), "%.2x", byte_array[i]) for example to convert a single byte in to the hexadecimal ASCII representation. Here is a function to dump a whole memory region on the screen:


void
hexdump(const void *data, int size)
{
    const unsigned char *byte = data;

    while (size > 0)
    {
        size--;
        printf("%.2x ", *byte);
        byte++;
    }
}


Char.s and Int.s are stored in binary in C. And can generally be used in place of each other when working in the ASCII range.

int i = 0x61;
char x = i;

fprintf( stdout, "%c", x );

that should print 'a' to the screen.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜