求一十进制转化二进制函数,要求输出的字符串是8位的(30分)

  • 主题发起人 主题发起人 午午
  • 开始时间 开始时间

午午

Unregistered / Unconfirmed
GUEST, unregistred user!
如题,
要求能得到如下的功能:
输入7,得到‘00000111’这样的字符串
 
自己顶下,没有人写过这样的函数么?
 
function mod_num(n1,n2:integer):integer;//取余数
begin
result:=n1-n1 div n2*n2
end;
function reverse(s:String):String;//取反串
Var
i,num:Integer;
st:String;
begin
num:=Length(s);
st:='';
For i:=numdo
wnTo 1do
begin
st:=st+s;
end;
Result:=st;
end;
Function DecTobin(Value :Integer) : string;//十进制转化二进制
Var
ST:String;
N:Integer;
begin
ST:='';
n:=value;
While n>=2do
begin
st:=st+IntToStr(mod_num(n,2));
n:=n div 2;
end;
st:=st+IntToStr(n);
Result:= Formatfloat('00000000',StrToFloat(reverse(st)));
end;
 
function To2Bin(iIn:integer):string;
var
i:integer;
sTmp:string;
begin
I:=iIn;
sTmp:='';
while i>=2do
begin
if (i mod 2)=1 then
begin
sTmp:='1'+stmp;
i:=i div 2;
end
else
begin
stmp:='0'+stmp;
i:=i div 2;
end;
end;
stmp:=chr(ord('0')+i) + stmp;
while length(stmp)<9do
stmp:='0'+stmp;
Result := stmp;
end;
 
to 鳄鱼先生,
你的程序在编译是提示,MOd_num和 reverse都是没有定义的,
是不是还要加上什么单元在uses那啊
谢谢
to znj_326:
谢谢你的程序,你的可以用,
 
不必要uses什么,拷入即可使用。
 
// 原来可以这样简单的
function byte_bin_st(abyte : byte) : string;
var bst : string;
i : integer;
b : byte;
begin
bst := '00000000';
b := 1;
for i:=0 to 7do
if (abyte and (b shl i) = (b shl i)) then
bst[8-i] := '1' else
bst[8-i] := '0';
result := bst;
end;
 
不错,不错,越来越简单了。哈哈。
 
多人接受答案了。
 
后退
顶部