首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

十六进制字符串、十进制整数、十六进制整数的转换,傻傻分不清楚~解决思路

2012-04-15 
十六进制字符串、十进制整数、十六进制整数的转换,傻傻分不清楚~各位,本人编写了一个上位机软件,使用密钥机

十六进制字符串、十进制整数、十六进制整数的转换,傻傻分不清楚~
各位,本人编写了一个上位机软件,使用密钥机制验证身份。收到内容为包含4个字节的十六进制数的字符串的密钥种子,如何将其中的十六进制数读出,赋给一个整形变量,经过各种运算,得到一个4个字节的十六进制结果,再将这个结果按字节分别赋给一个数组,发送出去?
  示意:
  list数组接收到内容为十六进制字符串形式的密钥种子。SeedData为存放密钥种子的整形变量。
   
  SeedData := strtoint('$'+(list[0]+list[1]+list[2]+list[3]));
  {下面如何将十进制转成十六进制整数?}

  {转换成功后,各种位运算}

  {下面将SeedData按字节发送出去}
  TransDataBuf[0]:=(SeedData SHR 6); //key
  TransDataBuf[1]:=(SeedData SHR 4);
  TransDataBuf[2]:=(SeedData SHR 2);
  TransDataBuf[3]:=SeedData;



[解决办法]
function IntToHex(Value: Integer; Digits: Integer): string;
上位机啊,嘿嘿,很有意思的。以前写的:
procedure TForm1.btn3Click(Sender: TObject);
var
i,k,t:integer;
j:Extended;
s,st:string;
begin
st:='0000000000000000';
//self.chklst1.Header
self.chklst1.MultiSelect:=True;
//ShowMessage(IntToStr(self.chklst1.Items.count));
self.mmo2.Clear;
//self.chklst1.SelectAll;
j:=0; k:=0;t:=0;

for i:=0 to self.chklst1.Items.Count-1 do
begin
k:=i div 8;
t:=((Self.chklst1.Items.Count-1-i) mod 8)+k*8+1;

//二进制
if self.chklst1.Checked[i] then
begin
self.chklst1.Selected[i]:=True;
s:=st;
s[t]:='1';
st:=s;
self.STBinary.Caption:=Copy(st,1,4)+'_'+copy(st,5,4)+'_'+copy(st,9,4)+'_'+copy(st,13,4);
end;

if self.chklst1.Checked[i] then
begin

//十进制
if not self.chklst1.Checked[7] then
begin
j:=j+Power(2,(16-t));
end
else
begin
j:=j-Power(2,(16-t))-2;
end;

//八进制

//十六进制

//输出位置
s:='';
s:=inttostr(16-((Self.chklst1.Items.Count-1-i) mod 8)-k*8-1);
//s:='M'+inttostr(3+(i div 8))+'.'+inttostr((i mod 8))+'=1';
self.mmo2.Lines.Add(s);
//ShowMessage(self.chklst1.Items[i]);
end;
s:=IntToStr(round(j));
self.STInt.Caption:=format('%.5d',[Round(j)]);
self.STWord.Caption:=IntToHex(round(j),4);

end;
end;

原理一样,随便转换。
[解决办法]
http://www.cnblogs.com/ywangzi/archive/2011/12/22/2297500.html

http://apps.hi.baidu.com/share/detail/33715335

我替你百度的,但不知哪个是你想要的。虽然你问题不是很明确,但这两个说明很明了。

热点排行