c/c++语言开发共享将8字节char数组转换为long

我们如何将8字节的char数组转换为long,因为<<不适用于long类型?

 #define word_size 8 long num = 0; char a[word_size] = "x88x99xaax0bbxccxddxeexff"; for (i=0; i < word_size;i++) { a[(word_size-1) - i] |= (num << (8*(word_size - i - 1))) & 0xFF; } printf("%lxn", num); 

    以下代码更有效:

     unsigned char[word_size] = ...; int64_t num = 0; for ( int i = 0 ; i < sizeof(a) ; i++ ) num = (num << 8) | a[i]; 

    这假设数组中字节的大端(最高位字节优先)排序。 对于小端(如您所示),只需自上而下处理:

     for ( int i = sizeof(a) ; --i >= 0 ; ) 

    注意: char是有符号还是无符号是依赖于实现的,因此将其指定为无符号,否则逻辑 - 或将无效。 更好用uint8_t ; 定义为8位,而char 不定义

    注意:您应该对常量使用全大写: WORD_SIZE而不是word_size 。 这是一个普遍接受的标准(C中标识符的唯一情况)。

      以上就是c/c++开发分享将8字节char数组转换为long相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/522804.html

      (0)
      上一篇 2020年12月11日
      下一篇 2020年12月11日

      精彩推荐