New file |
| | |
| | | /********************************************************************************* |
| | | * Copyright: (C) 2012 Guo Wenxue <guowenxue@gmail.com> |
| | | * All rights reserved. |
| | | * |
| | | * Filename: dump.c |
| | | * Description: This is the buffer dump print code. |
| | | * |
| | | * Version: 1.0.0(08/08/2012~) |
| | | * Author: Guo Wenxue <guowenxue@gmail.com> |
| | | * ChangeLog: 1, Release initial version on "08/08/2012 06:51:40 PM" |
| | | * |
| | | ********************************************************************************/ |
| | | |
| | | #include <unistd.h> |
| | | #include <stdio.h> |
| | | #include <string.h> |
| | | |
| | | void dump_buf(const char *prompt, const unsigned char *buf, size_t len) |
| | | { |
| | | char line[256]; |
| | | size_t i, j; |
| | | int offset; |
| | | |
| | | if( prompt ) |
| | | { |
| | | printf("%s", prompt); |
| | | } |
| | | |
| | | for(i = 0; i < len; i += 16) |
| | | { |
| | | offset = snprintf(line, sizeof(line), "%08zx: ", i); |
| | | |
| | | /* Print hex representation */ |
| | | for (j = 0; j < 16; j++) |
| | | { |
| | | if (i + j < len) |
| | | offset += snprintf(line + offset, sizeof(line) - offset, "%02x ", buf[i + j]); |
| | | else |
| | | offset += snprintf(line + offset, sizeof(line) - offset, " "); |
| | | } |
| | | |
| | | offset += snprintf(line + offset, sizeof(line) - offset, " "); |
| | | |
| | | /* Print ASCII representation */ |
| | | for (j = 0; j < 16; j++) |
| | | { |
| | | if (i + j < len) |
| | | { |
| | | unsigned char c = buf[i + j]; |
| | | offset += snprintf(line + offset, sizeof(line) - offset, "%c", (c >= 32 && c <= 126) ? c : '.'); |
| | | } |
| | | else |
| | | { |
| | | offset += snprintf(line + offset, sizeof(line) - offset, " "); |
| | | } |
| | | } |
| | | |
| | | /* Print the line */ |
| | | printf("%s\n", line); |
| | | } |
| | | } |
| | | |
| | | int main (int argc, char **argv) |
| | | { |
| | | char buf[256]; |
| | | int i; |
| | | |
| | | for(i=0; i<sizeof(buf); i++) |
| | | buf[i] = i; |
| | | |
| | | dump_buf("Hex dump buffer content:\n", buf, sizeof(buf)); |
| | | |
| | | return 0; |
| | | } |
| | | |