C# 和 OpenResty 中进行 CRC32

这篇具有很好参考价值的文章主要介绍了C# 和 OpenResty 中进行 CRC32。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、C# 进行 CRC32

public class CRC32
{
    private static readonly uint[] _crc32Table;
    static CRC32()
    {
        uint crc;
        _crc32Table = new uint[256];
        int i, j;
        for (i = 0; i < 256; i++)
        {
            crc = (uint)i;
            for (j = 8; j > 0; j--)
            {
                if ((crc & 1) == 1)
                    crc = (crc >> 1) ^ 0xEDB88320;
                else
                    crc >>= 1;
            }
            _crc32Table[i] = crc;
        }
    }

    /// <summary>
    /// 获取CRC32校验值
    /// </summary>
    public static uint GetCRC32(byte[] bytes)
    {
        uint value = 0xffffffff;
        int len = bytes.Length;
        for (int i = 0; i < len; i++)
        {
            value = (value >> 8) ^ _crc32Table[(value & 0xFF) ^ bytes[i]];
        }
        return value ^ 0xffffffff;
    }

    /// <summary>
    /// 获取CRC32校验值
    /// </summary>
    public static uint GetCRC32(string str)
    {
        byte[] bytes = Encoding.UTF8.GetBytes(str);
        return GetCRC32(bytes);
    }
}

使用方法

string dataStr = "1234567890";
var crcUint = CRC32.GetCRC32(dataStr);
var crcHex = string.Format("{0:X8}", crcUint);
Console.WriteLine($"{dataStr} => CRC32 Uint: {crcUint}, Hex: {crcHex}");

结果:1234567890 => CRC32 Uint: 639479525, Hex: 261DAEE5

 文章来源地址https://www.toymoban.com/news/detail-579038.html

二、OpenResty 中进行 CRC32

location /lua_crc {
    content_by_lua_block
    {
        local str = "1234567890"
        local crc32_long =  ngx.crc32_long(str)
        ngx.say(str .. " => CRC32 long: " .. crc32_long, "</br>")
    }
}

结果:1234567890 => CRC32 long: 639479525

C# 和 OpenResty 中进行 CRC32 的结果是一致的。

 

到了这里,关于C# 和 OpenResty 中进行 CRC32的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity 之 变量修饰符public 与private 以及默认

    当在Unity中使用 public 修饰符时,它将变量声明为 公共变量 ,这意味着该变量可以在Unity编辑器中进行设置,并且可以从其他脚本中访问和修改。公共变量在Unity中广泛用于在脚本之间共享数据,以及在Inspector面板中显示自定义设置。以下是关于 public 修饰符的详细信息和示例

    2024年02月11日
    浏览(46)
  • 【面试题05】private、protected、public、final 区别是什么

    本文已收录于PHP全栈系列专栏:PHP面试专区。 计划将全覆盖PHP开发领域所有的面试题, 对标资深工程师/架构师序列 ,欢迎大家提前关注锁定。 关于这几个限定词,是一些比较基础的面试题,一般我们肯定知道他们的用法,但是为什么这么用,很多时候还是值得思考的。今

    2024年02月10日
    浏览(51)
  • 轻松理解Java中的public、private、static和final

    一、概念 1、public和private 两个都是访问权限修饰符,用于控制外界对类内部成员的访问。 public:表明对象成员是完全共有的,外界可以随意访问。用public修饰的数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用。 private:表明对象成员是完全私有的,不

    2024年02月16日
    浏览(44)
  • 访问修饰符private,default,protected,public访问等级区别

    private : private 是最严格的访问修饰符,它将成员声明为私有的。私有成员只能在声明它们的类内部访问,其他类无法直接访问私有成员。这样可以确保数据的封装性和安全性。 default (默认):如果没有明确指定访问修饰符,成员将具有默认的访问修饰符。默认修饰符在同

    2024年02月08日
    浏览(43)
  • Controller 中的请求方法,private 和 public有什么区别?别用错了!

    作者:hinotoyk 链接:https://juejin.cn/post/6910215219822362632 背景:某日在公司中撸代码的时候,在一个常用的controller中添加一个方法,测试时突然报错说注入的service为null,捣鼓一阵发现后是方法修饰符写成private,修改成public后搞定。为什么会产生这个问题呢?就自己测试一下是哪

    2024年02月08日
    浏览(38)
  • 【Java】一文彻底弄懂访问修饰符(public/protected/默认/private)--建议收藏

    博主简介: 努力学习的预备程序媛一枚~ 博主主页: @是瑶瑶子啦 所属专栏: Java岛冒险记【从小白到大佬之路】  OOP(Object Oriented Programing),即面向对象编程,最重要的功能/特点之一就是 封装 ,这点在该专栏开篇博客【Java基础篇】Java重要特性,JDK,JRE,JVM区别和联系,环境变量

    2024年02月22日
    浏览(49)
  • Java当中四种权限刨析( private、default、protected、public)

    目录 一、java权限简介 二、举例使用 1.private 2.默认权限(default) 3.protected 4.public 注意        java当中有4种访问修饰限定符privat、default(默认访问权限),protected以及public。只有默认访问权限和public能够用来修饰类。修饰类的变量和方法四种权限都可以。 private:如果一个

    2024年02月06日
    浏览(43)
  • 【C++】继承 ⑤ ( public 公有继承 - 示例分析 | protected 保护继承 - 示例分析 | private 私有继承 - 示例分析 )

    成员的访问属性 需要看根据下面的逻辑进行判定 : 调用位置 : 看是在哪调用的 , 在 类内部 , 派生类 ( 子类 ) , 还是在 类外部 ; 子类继承方式 : 公有继承 : public 保护继承 : protected 私有继承 : private 父类中的访问级别 : 公有成员 : public 保护成员 : protected 私有成员 : private 如 :

    2024年02月08日
    浏览(38)
  • 【C/C++编译】CMake定义头文件路径、链接库路径及链接选项:PRIVATE,INTERFACE,PUBLIC

    在 CMake 中, 有许多常见的变量可用于配置和管理构建过程 。以下是一些常见的变量,包括当前源码路径: CMAKE_SOURCE_DIR : 当前 CMakeLists.txt 所在的源码目录的根路径 。 CMAKE_BINARY_DIR :构建目录的根路径,即 构建生成的可执行文件、库和其他构建输出的存放位置 。 CMAKE_CUR

    2024年02月11日
    浏览(45)
  • 【Java】使用PowerMockito mock static方法/new对象/mock对象的public或private方法的简单示例

    1.1 打桩类的public static方法 测试用例中如果需要对public静态方法的打桩,针对测试类增加注解@RunWith(PowerMockRunner.class)同时针对静态方法所在的类增加注解@PrepareForTest({StaticMethod.class}),接着在测试用例调用方法之前增加 PowerMockito.mockStatic(StaticMethod.class); PowerMockito.when(StaticMet

    2024年01月24日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包