小编bry*_*891的帖子

C - 使用位移运算符进行基本转换

我正在尝试将一些数据从十六进制转换为C中的base64,我在网上找到了一个算法,但我真的想知道它是如何工作的,而不仅仅是实现它并将其解雇.如果有人可以解释以下是如何工作的,我将不胜感激.我一直在阅读有关班次操作员的内容,我似乎并没有像我想象的那样理解它们...它并不是很适合我.

for (x = 0; x < dataLength; x += 3) 
{
  /* these three 8-bit (ASCII) characters become one 24-bit number */
  n = data[x] << 16;

  if((x+1) < dataLength)
     n += data[x+1] << 8;

  if((x+2) < dataLength)
     n += data[x+2];

  /* this 24-bit number gets separated into four 6-bit numbers */
  n0 = (uint8_t)(n >> 18) & 63;
  n1 = (uint8_t)(n >> 12) & 63;
  n2 = (uint8_t)(n >> 6) & 63;
  n3 = (uint8_t)n & 63;
Run Code Online (Sandbox Code Playgroud)

这段代码来自Wikibooks,它不是我的,我只是想了解位移和它如何允许我转换数据. …

c bit-manipulation shift

5
推荐指数
1
解决办法
3703
查看次数

标签 统计

bit-manipulation ×1

c ×1

shift ×1