国税总局发票助手二维码生成的CRC计算

php 生成国税局二维码 今天是在公司的最后一天,早上完成工作后大佬还没时间给我安排新的工作,现在就有点时间来写下博客了,前段时间都没写的博客,哎!感觉这个习惯很难养成。          今天来讲讲之前做的一个东西,就是要生成国税局的发票二维码,即 使用程序代码生成相应信息的二维码需要跟 税局发票助手 生成的二维码携带的信息是一样的。我使用的是 php 语言,一开始就上网百度了下 php 生成二维码的方法,一下子就能找 阅读详情

最近为了在我们的应用里生成发票信息的二维码,根据国税总局的二维码文档(见文后),唯一麻烦的地方就是需要计算一个CRC16的值。中间主要碰到了两个问题,一是文档中没有描述中文编码方式,经过试验,我们发现编码方式应为GBK。二是CRC值的生成,网上找了一些代码,生成的CRC16总是和总局发票助手生成的CRC16不一样。最后还是自己根据以下算法写了一个:


1)将字节流的前2字节放入一个长度为16的寄存器(int);
2)如果寄存器的首位为1,将寄存器左移1位(寄存器的最低位从下一个字节获得),再与生成多项式的简记式(CRC16的生成多项式简记式为0x8005)异或;
    否则仅将寄存器左移1位(寄存器的最低位从下一个字节获得);
3)重复第2步,直到字节流全部移入寄存器;
4)最后补充2个0字节,重复第二步
5)寄存器中的值则为CRC校验码。


示例代码如下

    private int crc16 = 0x8005;
    private int a = 0x0000;    

    public void testCRC() throws UnsupportedEncodingException {
        String input = "杭州XX科技有限公司</>9133XXXXXX92XXX9X</>杭州市滨江区XXXxxx号xx大厦x层xxx室</>xxx股份有限公司xxxx</>";

        byte[] inputs = input.getBytes("GBK");

        for (int i = 0; i < inputs.length; i ++) {
            div(inputs[i]);
        }

        byte r = 0;
        div(r);
        div(r);

        System.out.println(Integer.toHexSt
CRC16详解和Java实现 CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。 阅读详情

相关推荐

数字化电子发票校验规则及二维码生成规则

对应蓝字发票号码与红字确认单中的蓝字发票号码不一致,不允许开具。开具红票与红字确认单销售方纳税人识别号不一致,不允许开。开具红票与红字确认单购买方纳税人识别号不一致,不可。开具红票与红字确认单购买方名称不一致,不可开具。开具红票项目名称与红字确认单项目名称不一致,不。开具红票规格型号与红字确认单规格型号不一致,不。开具红票单位与红字确认单单位不一致,不可开具。开具红票数量与红字确认单数量不一致,不可开具。开具红票单价与红字确认单单价不一致,不可开具。开具红票金额与红字确认单金额不一致,不可开具。

记录点滴 1688

CRC16检验码生成+二维码生成

自己写的CRC16校验码生成,没毛病。 自己写的CRC16校验码生成,没毛病。 另外生成二维码,手机和扫描枪识别没毛病。

CRC16 计算 模板 完整版 国税总局发票助手二维码生成

也是看了网上的代码,研究了半天,发现缺少了两个初始化的值,字节挪了半天,运算出来的结果总是差最后一点点。最后试出来了那两个值,发现要想达到和国税局发票助手算出来的crc值,就是大小写的区别。

网上的生成国税局发票二维码的 demo

网上的生成国税局发票二维码的 demo,包含了网上那篇博文代码中缺少的变量的初值。

发票二维码和条形码的生成和解码——亲测有效.zip

发票二维码和条形码的生成和解码——亲自测试通过,并在项目中应用。 使用效果很不错,各种数据反馈,没有问题。

PHP版本的生成国税局发票二维码的 demo

PHP版本的生成国税局发票二维码的 demo,经过测试可以生成与 税局发票助手 一致的二维码(所含 base64 内容一致),主要是生成的 crc16 一致。

Python爬虫实战:从巨潮资讯网高效获取结构化JSON数据

在数据采集与处理领域,网络爬虫是实现自动化信息获取的核心技术。其基本原理是通过模拟浏览器行为,向目标服务器发送HTTP请求并解析响应内容,从而提取所需数据。相较于传统的网页解析,直接获取结构化数据(如JSON格式)能极大提升数据处理的效率与准确性,避免了复杂的HTML解析或PDF文本提取过程。这一技术价值在金融数据分析、市场研究、舆情监控等场景中尤为突出,能够快速构建高质量的数据集。本文以Python爬虫为例,聚焦于从巨潮资讯网这类官方信息披露平台,精准定位并抓取JSON格式的上市公司年报数据,详细阐述了接

weixin_29243279的博客 1419

KUKA机器人 - 从开机到自动运行

注1:本文仅代表本人对机器人使用的一些建议,在使用机器人前,还请详细阅读库卡机器人官方资料,道路千万条,安全第一条!!! 注2:技术有限,欢迎各位大大在阅读过程中发现各类问题,并且批评指正!!! 目录 一、准备工作 1. 机器人上电完成 2. 电脑安装Workvisual 二、学习手动移动机器人 三、项目配置 1. 设置机器人IP地址 2.电脑和机器人通过网线连接 3.查找并打开项目 4. 通讯配置 5. 项目上传 6. 检验IO配置 四、编程 1.新建程序 2. 程序...

yilunyao的博客 1万+

【Unity】YooAsset + HybridCLR热更

本文介绍了Unity游戏开发中的热更新技术方案,重点对比了资源热更和代码热更的主流工具。资源热更方面分析了Asset Bundle、Addressable和YooAsset的优缺点;代码热更部分比较了xLua、ILRuntime、InjectFix和HybridCLR的性能特点。文章详细演示了HybridCLR+YooAsset的实践方案,包括加载热更新程序集、反射调用热更代码、资源打包部署等完整流程。该方案通过原生运行时实现程序集级热更,具有极低性能损耗和全生命周期适用性,配合YooAsset简化了资源管

欢迎指错||纠正||建议||水评+点赞&&评论&&关注&&转发 2916

PM1132-220V转5V电源芯片:SOT-23-3封装的高效电源解决方案

在现代电子设备小型化和高效化的趋势下,PM1132芯片凭借其的能力与特性,成为工业控制IoT设备及便携电器的理想电源管理方案。以下从核心技术设计挑战和应用实践展开分析。

M_D13Z476I000l的博客 804

华为昇腾云平台适配Baichuan2大模型记录

文件发现报错:ValueError: The pipeline stage 2 in auto_parallel_context is not equal to the pipeline_stage 1 in the config.run_baichuan2_7b.yaml`,发现默认设备数是16卡,对应的pipeline_stage为2,但实际是8卡,那就改成下面的试试看。,将Baichuan2_7B_Chat.ckpt文件复制进去,将。点击镜像管理,突然发现有个2_2_0,赶紧新建了一个,成功。

羊城迷鹿的博客 2393

从零开始:C#上位机集成YOLO完成摄像头目标追踪(保姆级教程)

新手入门C#上位机+YOLO做摄像头目标追踪,最忌讳的是“只抄代码,不懂逻辑”。这个教程不仅给了完整代码,还把核心原理和踩坑点都讲清楚了,新手跟着走,不仅能跑通demo,还能理解为什么这么写。如果你们在运行时遇到具体问题,比如模型导出失败、代码报错,都可以在评论区留言,我会一一解答。后续也可以出一期工业相机+YOLO目标追踪的教程,帮助大家把demo落地到实际生产中。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1030

STM32F103待机模式原理与低功耗实战指南

待机模式是嵌入式系统实现超低功耗的核心机制,其本质是通过切断内核域电源(VDD/VDDA)实现微安级静态电流,区别于睡眠/停止模式的状态保持特性。原理上依赖电源域隔离、WKUP引脚事件唤醒与RTC备份域协同,技术价值在于支撑电池供电设备长达数年续航。典型应用场景包括物联网传感器节点、智能电表、便携医疗设备等对功耗极度敏感的终端。工程落地需严格遵循GPIO模拟输入配置、唤醒标志清除、备份域解锁等关键步骤,避免因漏电或误唤醒导致实测电流超标。本文以STM32F103为例,深入解析待机模式的硬件基础与HAL库实现

weixin_32999557的博客 66

​​手把手教你学PCIE--ATU 的 Bar 匹配模式与地址匹配模式详解​

摘要: ATU(地址转换单元)提供两种地址匹配模式:Bar匹配模式基于PCI设备的BAR寄存器自动映射虚拟地址(只需配置物理基址),适用于标准PCI设备DMA;地址匹配模式需显式配置虚拟与物理地址范围,适合自定义映射场景。核心区别在于匹配依据(BAR自动推导vs人工定义),Bar模式简化配置,地址模式更灵活。

MHD0815的博客 380

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

上一篇: About Face 3 读书笔记
下一篇: TCP backlog在Linux下是如何工作的
帅帅兔子
博客等级 码龄24年 7粉丝 29原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

帅帅兔子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值