如何把整数保存到字节数组? ( 积分: 100 )

  • 主题发起人 主题发起人 xmwgp
  • 开始时间 开始时间
X

xmwgp

Unregistered / Unconfirmed
GUEST, unregistred user!
如题。<br>现在有个C的函数如下,对C不熟悉,麻烦哪位大富翁帮忙翻译到DELPHI,谢谢。<br><br>或者直接帮忙写一个相同功能的DELPHI函数。<br><br>&nbsp;///&nbsp;&lt;summary&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;///将整型转化为字节数组<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;&lt;/summary&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;&lt;param&nbsp;name=&quot;num&quot;&gt;要转化的整型&lt;/param&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;&lt;param&nbsp;name=&quot;len&quot;&gt;转化后字节数组长度&lt;/param&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;&lt;returns&gt;&lt;/returns&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;byte[]&nbsp;intToBytes(int&nbsp;num,&nbsp;int&nbsp;len)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;byte[]&nbsp;b&nbsp;=&nbsp;new&nbsp;byte[len];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;sw&nbsp;=&nbsp;((len&nbsp;-&nbsp;1)&nbsp;*&nbsp;8);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;mask&nbsp;=&nbsp;(0xff&nbsp;&lt;&lt;&nbsp;sw);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(int&nbsp;l&nbsp;=&nbsp;0;&nbsp;l&nbsp;&lt;&nbsp;len;&nbsp;l++)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b[l]&nbsp;=&nbsp;(byte)(((uint)num&nbsp;&amp;&nbsp;mask)&nbsp;&gt;&gt;&nbsp;sw);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sw&nbsp;-=&nbsp;8;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mask&nbsp;&gt;&gt;=&nbsp;8;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;b;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
 
type<br>&nbsp;&nbsp;TBytes&nbsp;=&nbsp;array&nbsp;of&nbsp;Byte;<br><br>function&nbsp;intToBytes(num,&nbsp;len:&nbsp;Integer):&nbsp;TBytes;<br>var<br>&nbsp;&nbsp;sw:&nbsp;Integer;<br>&nbsp;&nbsp;mask:&nbsp;Integer;<br>&nbsp;&nbsp;i:&nbsp;Integer;<br>begin<br>&nbsp;&nbsp;SetLength(result,&nbsp;len);<br>&nbsp;&nbsp;sw&nbsp;:=&nbsp;(len&nbsp;-&nbsp;1)&nbsp;*&nbsp;8;<br>&nbsp;&nbsp;mask&nbsp;:=&nbsp;$ff&nbsp;shl&nbsp;sw;<br>&nbsp;&nbsp;for&nbsp;i:=0&nbsp;to&nbsp;len&nbsp;-1&nbsp;do&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;:=&nbsp;(num&nbsp;and&nbsp;mask)&nbsp;shr&nbsp;sw;<br>&nbsp;&nbsp;&nbsp;&nbsp;sw&nbsp;:=&nbsp;sw&nbsp;-&nbsp;8;<br>&nbsp;&nbsp;&nbsp;&nbsp;mask&nbsp;:=&nbsp;mask&nbsp;shr&nbsp;8;<br>&nbsp;&nbsp;end;<br>end;
 
type<br>&nbsp;&nbsp;&nbsp;Bytes=array&nbsp;of&nbsp;byte;<br><br>function&nbsp;intToBytes(num,&nbsp;len:&nbsp;integer):&nbsp;bytes;<br>var<br>&nbsp;&nbsp;l,&nbsp;sw,&nbsp;mask:&nbsp;integer;<br>begin<br>&nbsp;&nbsp;setlength(result,&nbsp;len-1);<br>&nbsp;&nbsp;sw&nbsp;:=&nbsp;((len&nbsp;-&nbsp;1)&nbsp;*&nbsp;8);<br>&nbsp;&nbsp;mask&nbsp;:=&nbsp;($ff&nbsp;shl&nbsp;sw);<br>&nbsp;&nbsp;for&nbsp;l&nbsp;:=&nbsp;0&nbsp;to&nbsp;len&nbsp;-&nbsp;1&nbsp;do<br>&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;result[l]&nbsp;:=&nbsp;(num&nbsp;and&nbsp;mask)&nbsp;shr&nbsp;sw;<br>&nbsp;&nbsp;&nbsp;&nbsp;sw&nbsp;:=&nbsp;sw&nbsp;-&nbsp;8;<br>&nbsp;&nbsp;&nbsp;&nbsp;mask&nbsp;:=&nbsp;mask&nbsp;shr&nbsp;8;<br>&nbsp;&nbsp;end;<br>end;
 
kaida:<br>setlength(result,&nbsp;len-1);<br>应该是<br>setlength(result,&nbsp;len);<br>不要-1了吧。<br>谢谢了!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
719
import
I
I
回复
0
查看
843
import
I
I
回复
0
查看
747
import
I
后退
顶部