第六行定义数组是8个元素,下标是0-7,分别对应0-7对应的二进制数字符串。至于为什么是a[8][4],因为三个数字字符占三个,还有一个\0占一个,所以是四个。(楼上说是八进制,是不对的,不过这题确实数组里没有给出8、9对应的二进制数字符,可能是因为到了8,二进制字符得有四位,怕麻烦而没有添加进来。)
七八行完成的就是把s1字符串数组里的一个一个字符循环一遍,然后每次循环把每个位的数字对应的八进制数字符串连接到结果字符串s2的后面。如s1里是1234,那么结果就是001010011100。
九十行完成的就是把二进制数转为十进制数。非要说有什么原理的话:乘权求和。不过自己好好理解进制应该也能看得懂。s2[i]对应的是s2数组中第i个元素的ASCII字符序号,减去0的ASCII字符序号(‘0’表示),那么就是数字本身大小。