C语言7bit编码实现,ASCII编码->7Bit编码

转换说明:

0818b9ca8b590ca3270a3433284dd417.png

代码:

private byte[] ASCII_2_7BIT(byte[] aryBytes)

{

int step = 0; //    移动字节数

int byTemp = 0x7F;

for (int i = 0; i < aryBytes.Length; i++)

{

aryBytes[i] = (byte)(aryBytes[i] & byTemp); //   每个字节最高位清0

}

//  拼7bit

for (int i = 0; i < aryBytes.Length - 1; i++)

{

step = i % 8 + 1;

byTemp = aryBytes[i + 1] & HexValue(step);

aryBytes[i + 1] = (byte)(aryBytes[i + 1] >> step);

byTemp = byTemp << (8 - step);

aryBytes[i] = (byte)(aryBytes[i] + byTemp);

if (step > 6) //    移动7个字节的后一个字节不再处理。

i++;

}

//  取出有效字节

byte[] btAim = new byte[aryBytes.Length-aryBytes.Length / 8];

for (int i = 0,j=0; i < aryBytes.Length; i++)

{

if ((i+1) % 8 != 0)

btAim[j++] = aryBytes[i];

}

return btAim;

}

结果验证:

字符串:1234

ASCII:  31 32 33 34

7BIT:    31 D9 8C 06

BIN :    00110001 11011001 10001100 00000110

字符串: hellohello

ASCII:   68 65 6C 6C 6F 68 65 6C 6C 6F 7BIT:     E8 32 9B FD 46 97 D9 EC 37 BIN :     11101000 00110010 10011011 11111101 01000110 10010111 11011001 11101100 00110111

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值