正变换:num[ i ] = A[ 2 * i ] - 'a' + ( A[ i * 2 + 1 ] - 'a' ) * 16
num是char型数组 ,A是原数组 .字符是以整数形式存储的,这里我用0表示字符a,所以它并不是a的真正asc码值,只是相对于'a'的偏移量.所以‘a’+ 0才是a的asc码值.同理‘a’+ 1 是'b'.
( A[ i * 2 + 1 ] - 'a' ) 第二个字符相对于a的偏移量。 第二个字符使用高4位
逆变换:A[ 2 * i + 1 ] = ( num[ i ] and 240 ) / 16 + 'a' ;A[ 2 * i ] = num[ i ] and 15 + 'a'
240是11110000
大概就是这样。
别人给的一个方案。
长度缩短一半。
num是char型数组 ,A是原数组 .字符是以整数形式存储的,这里我用0表示字符a,所以它并不是a的真正asc码值,只是相对于'a'的偏移量.所以‘a’+ 0才是a的asc码值.同理‘a’+ 1 是'b'.
( A[ i * 2 + 1 ] - 'a' ) 第二个字符相对于a的偏移量。 第二个字符使用高4位
逆变换:A[ 2 * i + 1 ] = ( num[ i ] and 240 ) / 16 + 'a' ;A[ 2 * i ] = num[ i ] and 15 + 'a'
240是11110000
大概就是这样。
别人给的一个方案。
长度缩短一半。