第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在C中將字節(jié)數(shù)組轉(zhuǎn)換為十六進制字符串?

如何在C中將字節(jié)數(shù)組轉(zhuǎn)換為十六進制字符串?

C
犯罪嫌疑人X 2019-10-28 16:54:47
我有:uint8 buf[] = {0, 1, 10, 11};我想將字節(jié)數(shù)組轉(zhuǎn)換為字符串,以便可以使用printf打印該字符串:printf("%s\n", str);得到(不需要冒號):"00:01:0A:0B"任何幫助將不勝感激。
查看完整描述

3 回答

?
慕碼人2483693

TA貢獻1860條經(jīng)驗 獲得超9個贊

printf("%02X:%02X:%02X:%02X", buf[0], buf[1], buf[2], buf[3]);

以更通用的方式:


int i;

for (i = 0; i < x; i++)

{

    if (i > 0) printf(":");

    printf("%02X", buf[i]);

}

printf("\n");

要連接到字符串,有幾種方法可以執(zhí)行此操作...我可能會保留一個指向字符串末尾的指針并使用sprintf。您還應該跟蹤數(shù)組的大小,以確保其大小不會超過分配的空間:


int i;

char* buf2 = stringbuf;

char* endofbuf = stringbuf + sizeof(stringbuf);

for (i = 0; i < x; i++)

{

    /* i use 5 here since we are going to add at most 

       3 chars, need a space for the end '\n' and need

       a null terminator */

    if (buf2 + 5 < endofbuf)

    {

        if (i > 0)

        {

            buf2 += sprintf(buf2, ":");

        }

        buf2 += sprintf(buf2, "%02X", buf[i]);

    }

}

buf2 += sprintf(buf2, "\n");


查看完整回答
反對 回復 2019-10-28
?
MMMHUHU

TA貢獻1834條經(jīng)驗 獲得超8個贊

這是一種更快的方法:


#include <stdlib.h>

#include <stdio.h>


unsigned char *     bin_to_strhex(const unsigned char *bin, unsigned int binsz,

                                  unsigned char **result)

{

  unsigned char     hex_str[]= "0123456789abcdef";

  unsigned int      i;


  if (!(*result = (unsigned char *)malloc(binsz * 2 + 1)))

    return (NULL);


  (*result)[binsz * 2] = 0;


  if (!binsz)

    return (NULL);


  for (i = 0; i < binsz; i++)

    {

      (*result)[i * 2 + 0] = hex_str[(bin[i] >> 4) & 0x0F];

      (*result)[i * 2 + 1] = hex_str[(bin[i]     ) & 0x0F];

    }

  return (*result);

}


int                 main()

{

  //the calling

  unsigned char     buf[] = {0,1,10,11};

  unsigned char *   result;


  printf("result : %s\n", bin_to_strhex((unsigned char *)buf, sizeof(buf), &result));

  free(result);


  return 0

}


查看完整回答
反對 回復 2019-10-28
  • 3 回答
  • 0 關注
  • 1114 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號