1、va_start的代码说明 void arg_test(int i, ...);int main(int argc,char *argv[]){int int_size = _INTSIZEOF(int);printf(int_size=%d\n, int_size);arg_test(0, 4);//argt(,3,4);return 0;}void arg_test(int i, ...){int j=0;va_list arg_ptr;va_start(arg_ptr, i);printf(&i = %p\n, &i);//印参数i在堆栈中的地址printf(arg_ptr = %p\n, arg_ptr);//印va_start之后arg_ptr地址/*这时arg_ptr应该比参数i的地址高sizeof(int)个字节,即指向下一个参数的地址*/j=*((int *)arg_ptr);printf(%d %d\n, i, j);j=va_arg(arg_ptr, int);printf(arg_ptr = %p\n, arg_ptr);//印va_arg后arg_ptr的地址/*这时arg_ptr应该比参数i的地址高sizeof(int)个字节,即指向下一个参数的地址,如果已经是最后一个参数,arg_ptr会为NULL*/va_end(arg_ptr);printf(%d %d\n, i, j);}说明:int int_size = _INTSIZEOF(int);得到int类型所占字节数va_start(arg_ptr, i); 得到第一个可变参数地址根据定义(va_list)&v得到起始参数的地址, 再加上_INTSIZEOF(v) ,就是其实参数下一个参数的地址,即第一个可变参数地址.j=va_arg(arg_ptr, int); 得到第一个可变参数的值,并且arg_ptr指针上移一个_INTSIZEOF(int),即指向下一个可变参数的地址.va_end(arg_ptr);置空arg_ptr,即arg_ptr=(void *)0;你要是对这个问题,有问题,那你应该不清楚 c 可以处理,变长的参数了吧?、c 的 printf 的函数原型,你清楚不?int printf(const char *fmt, ...);//逗,后面,即第二个参数是三个点vsprintf 的函数原型:int vsprintf(char *s, const char *fmt, va_list arg);你见过va_list类型了吗?好吧,我给个简单例子#includeint add(int n, ...);int main(){printf(%d\n, add(,,第一个4,是4个数的意思 */printf(%d\n, add(,个数的意思 */return 0;}int add(int n, ...)/* 该函数返回 n个 int 数的和,n个int,跟在第一个参数后面,依次列出*/{int i, sum, tmp;va_list arg;/* 定义 va_list 类型变量 arg */va_start(arg, n);/* arg初始化,n 是最后一个可见的参数名字 */for(sum = i = 0; i < n; i){tmp = va_arg(arg, int);/* 每一次获取一个整数,第二个类型,就是获取数的类型 */sum = tmp;}va_end(arg);/* 结束之前,end 一下~~ */return sum;}我暂时只能给你说这么多了,你试图去理解它吧,如果理解了,就不成问题了;不理解,或是看书,或是问老师、同学,或是hi我,随你~~
文章插图
2、CVV代码的计算【威能百度百科 威能d代码】 ISA卡校验值C的计算计算步骤b个字符:主帐(PAN) 位卡有效期(EXPIRE DATE) 4位代码(SERICE CODE) ),转换方法为将每一位数字转换为4位的BCD码,即:十六进制数字/BCD码4 05 06 07 08 9 A B C E F ,使之成为 Bits的字段,将该字段分为两个,后Bits数据为数据块2 。3 用CKA对数据块1加密(ENCRYPTION) 。异或(XOR),并用CKA对结果加密 。5 用CKB对步骤4得出的结果解密(DECRYPTION) 。6 用CKA对步骤5得出的结果加密 。~9) 。。得出的数字从左至右排列,步骤8得出的数字放在步骤7得出的数字之后 。步骤9得出结果的前三位数字即为卡的校验值(C) 。测试数据以下数据可用于编写C算法时检查程序是否正确,其中:CKA= AB CDEFCKB= FEDC BA位PAN 失效日期代码 C位PAN 失效日期代码 C以第一个十六位主帐为例,计算卡校验值的步骤如下:主帐:失效日期: 代码: 步骤1: 抽取数据步骤2: 数据块ISA卡校验值C的计算块 块 步骤3: 用CKA加密块 CKA = AB CDEF结果CC C6BE步骤的结果,并用CKA对异或结果加密结果CC C6BE块 结果 = BECKA = AB CDEF结果A C步骤5: 用CKB对步骤4的结果解密结果A CCKB = FEDC BA结果 DB E步骤6: 用CKA对步骤5的结果加密结果 DB ECKA = AB CDEF结果 DD步骤7: 对步骤6的结果抽取数字结果 步骤8: 对步骤6的结果抽取十六进制字符,并转换为进制数字(每位减)抽取结果 = BECD D结果8 =3步骤的数字后面结果 步骤: 步骤9的结果前3位数字为CISA卡校验值C的计算结果 = ISA PIN校验值的计算计算步骤ISA PIN校验值的计算包括以下要素:序 要素 说明 bits) if the PIN erification Key Pair bits) if the PIN erification Key Pair3. PAN Rightmostdigits of the PAN exclude the check digit4. PK Index 0F5. Consumer PIN First 4 digits of the consumer PINPIN校验值即P的计算方法如下:个字节的十六进制数字串比特BCD码,用PKA作DES加密(Encryption)运算3. 将以上结果用PKB作DES解密(Decryption)运算4. 将以上结果再用PKA作DES加密(Encryption)运算得结果~9).6. 对步骤5得出的结果从左到右抽取出所有的十六进制字符(A~F),并对每一个十六进制字符减十进制,使之变为数字,例如十六进制B(十进制为)变为1.得出的数字从左至右排列,步骤6得出的数字放在步骤5得出的数字之后.8. 步骤7得出结果的前四位数字即为PIN的校验值(P).测试数据以下数据可用于编写P算法时检查程序是否正确,其中:PKA = AB CDEFPKB = FEDC BA位PAN PK Index Consumer PINPISA PIN校验值P的计算x Fx F 位PAN PK Index Consumer PINP00x Fx F 注:以上表中x为帐之校验值,效. 以第一个十六位主帐为例,计算卡校验值的步骤如下:主帐:4 x (注:x为帐之校验值)PK Index: 2Consumer PIN: 步骤1:抽取数据组成数据块结果 步骤2:用PKA作DES加密(Encryption)运算结果 PKA = AB CDEF结果AFCA步骤3:用PKB作DES解密(Decryption)运算结果AFCAPKB = FEDC BA结果FB7 C CCDF步骤4:再用PKA作DES加密(Encryption)运算得结果结果FB7 C CCDFPKA = AB CDEF结果 DBDISA PIN校验值P的计算步骤)结果步骤6: 对步骤4的结果抽取十六进制字符,并转换为进制数字(每位减)抽取结果 = CDBE EBFB D结果 3步骤的数字后面结果 步骤位数字为P结果
文章插图
3、求数控车床编程代码D代码? GSKTA/D编程教材《一》编程的基本概念《二》常用G代码介绍《三》单一固定循环《四》复合型固定循环《五》用户宏程序《六》螺纹加工《七》T代码及刀补《八》F代码及G《九》S代码及G(注意:本教材仅供学习参考,实际操作编程时应以广数GSKT车床数控系统使用手册为准)月 《一》编程的基本概念:一个完整的车床加工程序一般用于在一次装夹中按工艺要完成对工件的加工,数控程序包括程序、程序段 。(一)程序:相当于程序名称,系统通过程序可从存储器中多个程序中识别所要处理的程序,程序由字母O及4位数字组成 。(二)程序段:相当于一句程序语句,由若干个字段组成,最后是一个分(;)录入时在键入EOB键后自动加上 。整个程序由若干个程序段构成,一个程序段用来完成刀具的一个或一组动作,或实现机床的一些功能 。(三)字段(或称为字):由称为“地址”的单个英语字母加若干位数字组成 。根据其功能可分成以下几种类型的字段:▲程序段:由字母N及数字组成,位于程序段最前面,主要作用是使程序便于阅读,可以省略,但某些特殊程序段(如表示跳转指令的目标程序段)必须标明程序段 。为了便于修改程序时插入新程序段,各句程序段一般可间隔一些数字(如N) 。▲准备功能:即G代码,由字母G及二位数字组成,大多数G代码用以指示刀具的运动 。(如G)▲表示尺寸(坐标值)的字段:一般用在G代码字段的后面,为表示运动的G代码提供坐标数据,由一个字母与坐标值(整数或小数)组成 。字母包括:表示绝对坐标:X、Y、Z表示相对坐标:U、、W表示园心坐标:I、 J、 K(车床实际使用的坐标只有X、Z,所以Y、、J都用不着)▼表示进给量的字段:用字母F加进给量值组成,一般用在插补指令的程序段中,规定了插补运动的速度 。▼S代码:表示主轴速度的字段 。用字母S加主轴每分钟转速(或主轴线速度:米/分)组成 。▼T代码:表示换刀及刀补▼辅助功能:用字母M及二位数字组成,表示机床的开、停等 。本机床的主要有效M代码为:M:主轴停 。M:关冷却液 。M:程序暂停 。(暂停后可按“循环起动”按钮继续运行) M来结束程序 。控制尾架及卡盘的M代码本机床无效 。▼其他特殊用途的字段,主要用在一些螺纹车削、循环车削的G代码后面,及用户宏程序中 。《二》常用G代码介绍(一)基本知识G代码的主要功能:直接控制刀具运动 。3个基本概念:▲插补:数控机床上,刀具根据指令,沿X轴及Z轴的进给运动 。运动轨迹有:Z方向的直线用于车园柱面X方向的直线用于车端面钭直线用于车园锥面园弧用于车球面插补运动的实质,即车床数控加工的基本原理:刀具根据数控系统的指令,沿X轴及Y轴方向分别移动小的一段距离,刀具的实际移动方向为X、Y二个方向的合成,一连串的这种移动组成了刀具的运动轨迹 。最基本的插补指令:G▲模态代码与非模态代码模态代码:程序中的有关字段一经设置后,在以后的程序段中一直有效,如继续保持该状态,不必重新设置 。非模态代码,即一次性代码,只在本程序段有效 。所有的G代码可分为模态与非模态▲G代码的分组:共四个组①组:属一次性代码,主要包括二大类:(暂停) 。,一条指令要重复循环多次 。②组:用得最多的一组,主要用于刀具的移动 。主要包括以下几类:
文章插图
4、威能sf4是什么故障代码 水温太高,可能是供水传感器探头错误或出现故障,还有可能是泵阻塞据经验,是没有检测到持续的火焰信,供气有问题!燃气阀、控制板故障可能性较大!小问题,就是燃气阀的步进电机卡了,拆开弄一下就可以了,维修的去就直接换新的水温太高,可能是供水传感器探头错误或出现故障,还有可能是泵阻塞首先您需要查看一下燃气的压力是不是不够 装有控制燃气的电池是否需要更换才装的应该在保修期内,赶紧找经销商 。看故障代码是燃气阀上步进电机的问题 。威能的点还是挺多的,让的给换个燃气阀试试 。据经验,是没有检测到持续的火焰信,供气有问题!燃气阀、控制板故障可能性较大!供暖温度设置应为度 。建议关闭、等待五分钟,重启 。F 燃气阀故障 你先看下自己家的煤气灶能点火吗,是不是没有天然气了? 要么就是燃气阀坏了 燃气阀的故障率挺高的 有的地方燃气不是很干净容易堵塞燃气阀 实在不行就找给你装壁挂炉的...F 。你看看内置水泵是否正常工作? 如果没有解决的话,你可以说的稍详细一点,威能的壁...水压传感器或者水泵的故障 把电关掉重新启动看下,如果不能启动 。就让的人来吧 。当看到锅炉液晶显示屏显示“F”时,请检查锅炉燃气供应情况 。如燃气管道阀门是否开?燃气表电池是否欠量?燃气卡是否欠量?燃气灶是否可以点火等 。若燃气正常,请按标有“火苗叉”标志的复位键重新启动.
文章插图
推荐阅读
- 空调显示lc怎么解决 史密斯显示LC怎么解决
- 威能壁挂炉啸叫声 威能锅炉有轻微齿轮声音
- 博世厨师机 异响 博世厨师机搅面声音异常
- 博世错误代码67 博世错误代码
- 徕卡CL相机进水维修多少钱
- 惠普ELITEBOOK1040笔记本硬盘坏了的原因是什么
- 康宝燃气灶松手就灭火的原因
- 格兰仕XQB80洗衣机换轴承维修报价
- 努比亚手机前置摄像头坏了维修报价