银联8583报文中,mac算法的细节问题

小弟我初次接触8583,虽然知道mac ecb的流程,但是在写代码的细节问题上恳请大神指点:
一开始说把MAB按每8个字节截位,依次把截好的代码段1与代码段2异或,生成异或结果1,再用异或结果1与代码段3异或。。。如此往复进行;
那首先作为参数的MAB数据是要十六进制的还是十进制的?如果是十六进制的那我函数里是不是应该按每16个字节截位?
还有这个循环异或的方法求大神指点一下,或者给代码看一下,谢谢!

http://bbs.csdn.net/topics/390802811?page=1