【无标题】

文章介绍了在GstreamerM3U8解析中,如何使用gst_m3u8_parse_hex_num_2_ascii函数将16进制数转换为ASCII字符,以及随后的字节数组转字符串处理过程。
摘要由CSDN通过智能技术生成

16进制转ascii

#define DRM_BUFFER_CONVERT_OFFSET 2
#define ASCII_CODE_NUM_0          (48)
#define ASCII_CODE_LETTER_LOWER_A (97)

static guint8
gst_m3u8_parse_hex_num_2_ascii (guint8 src)
{
  if (src < 0xa) {
    return src + ASCII_CODE_NUM_0;
  } else {
    return src + ASCII_CODE_LETTER_LOWER_A - 0xa;
  }
}

字节数组转字符串

static gint
gst_m3u8_parse_bytes_2_hex_char (guint8 *src, guint src_size)
{
  guint8 dest[DRM_MAX_DRM_INFO_SIZE * DRM_BUFFER_CONVERT_OFFSET];
  if (src == NULL) {
    GST_ERROR ("The Given src NULL or dest NULL.\n");
    return -1;
  }
  if (src_size >= DRM_MAX_DRM_INFO_SIZE) {
    GST_ERROR ("The Given Src Len: %d, Buffer Size: %d Not Match.\n", src_size, DRM_MAX_DRM_INFO_SIZE);
    return -1;
  }
  for (guint idx = 0; idx < src_size; idx++) { // 1 Static Hex Char should be parsed to 2 Hex Char
    dest[idx * DRM_BUFFER_CONVERT_OFFSET] =
      gst_m3u8_parse_hex_num_2_ascii ((src[idx] >> 4) & 0x0f); // Each Hex char uses 4 bits
    dest[idx * DRM_BUFFER_CONVERT_OFFSET + 1] = gst_m3u8_parse_hex_num_2_ascii (src[idx] & 0x0f);
  }
  dest[src_size * DRM_BUFFER_CONVERT_OFFSET] = '\0';
  GST_ERROR ("gst_m3u8_parse_bytes_2_hex_char dest:%s\n", dest);
  return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值