fork download
  1. #include <stdio.h>
  2. #include <stdbool.h>
  3.  
  4. bool toHex1(int val, char *dstPtr){
  5. if (dstPtr == NULL) {
  6. return false;
  7. }
  8. sprintf(dstPtr, "%X", val);
  9. return true;
  10. }
  11. bool toHex2(int val, char *dstPtr) {
  12. if (dstPtr == NULL) {
  13. return false;
  14. }
  15.  
  16. char wrkstr[5] = {0};
  17. static const int maxbit = 16;
  18. int wrkval = val;
  19. int bit = 0;
  20. while(bit <= maxbit) {
  21. wrkval = (val >> bit & 0xF);
  22. if (wrkval == 0) {
  23. break;
  24. }
  25. if (wrkval < 10) {
  26. wrkstr[bit/4] = '0' + wrkval;
  27. } else {
  28. wrkstr[bit/4] = 'A' + (wrkval - 10);
  29. }
  30. // printf("%d", wrkval);
  31. bit += 4;
  32. }
  33.  
  34. int idx = bit / 4 - 1;
  35. while(idx >= 0) {
  36. dstPtr[idx] = wrkstr[bit / 4 - idx - 1];
  37. idx--;
  38. }
  39.  
  40. return true;
  41. }
  42.  
  43. int main(void) {
  44. int val=0;
  45. char res[20];
  46.  
  47. if(toHex1(val, res)) {
  48. printf("%d %s\n", val, res);
  49. }
  50. res[0] = 0x0;
  51. if(toHex2(val, res)) {
  52. printf("%d %s\n", val, res);
  53. }
  54.  
  55. return 0;
  56. }
  57.  
Success #stdin #stdout 0s 2168KB
stdin
Standard input is empty
stdout
0 0
0