⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 str2bin.m

📁 运用matlab实现DES加密解密
💻 M
字号:
function bin=str2bin(str,k,flag)
%功能:字符串转二进制串,字符串中每个字符对应8位二进制字符
%输入:str 字符向量 ascii字符串
%输出:bin 字符向量 二进制字符串
%     flag 正整数 用以说明是否在二进制串中每隔k位加一位奇偶校验位,0表示不加,1表示加奇校验位,2表示加偶校验位
%     k    正整数 参与每次奇偶校验位运算的bit位数
%说明: 当length(str)*8 mod k!=0时,对bin二进制串最后length(str)*8 mod k 位补零到k位后再做奇校验
l=length(str);
bin=[];
temp=[];
for x=1:l
     temp=[temp,dec2bin(str(x),8)];
end

if flag~=0 %判断是否需要加奇偶校验位
     n=ceil(l*8/k);% 校验位总位数
     rb=mod(l*8,k);% 数据总长模k得的数
     sb=0;
     if rb~=0
     sb=k-rb;%算出当二进制串做奇偶校验位时,在串尾补零的个数
     for i=1:sb
         z(i)='0';
     end
     temp=[temp z];%组成完整能够被k整除的数据
     end     
     for x=0:n-1
        temp1=temp(x*k+1:(x+1)*k);
        lone=length(find(temp1=='1'));%求k位二进制串中1的个数 
        if flag==1 %计算奇校验位值
            if mod(lone,2)==0
                opb='1';
            else
                opb='0';
            end
        else if flag==2%计算偶校验位值
                if mod(lone,2)==0
                    opb='0';
                else
                    opb='1';
                end
            end
        end
       temp1=[temp1 opb];%添加校验位
       bin=[bin temp1];
    end
else
        bin=temp;%若无校验位则直接相等
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -