原来楼主是这个意思呀!
我来个delphi的:
procedure TForm1.Button1Click(Sender: TObject);
begin
if edit1.Text = ''
then showmessage('input your code')
else Edit2.Text := TrimLeft(IntToHex(strToint64(Edit1.Text),16));
end;
Private Sub Command1_Click()
Dim a#
Dim i#
i = 2 ^ 32
a = 733445845855478#
Do While a > 2 ^ 32
a = a - i
Loop
i = 2 ^ 16
Do While a > 2 ^ 16
a = a - i
Loop
千辛万苦终于找到了
Dim a As Double, x As String
a = Text1.Text
Do While a > 10000
x = Hex(Val(Right(a, 4)) Mod 16) & x
a = Int(a / 16)
Loop
x = Hex(a) & x
MsgBox x
原来是我对数制的处理方法不理解导致的缘故,合乎 谢谢楼上的所有人拉!~非常感谢大家!~
char * itobs(BIT n, char * ps)
{
int i;
static int size = 8 * sizeof(BIT);/*其中static将size声明为静态,这样在调用之后
**局部变量size的原值仍然保留。
**在这里也可以不加static, 这样,虽然调用之后s
**ize的值丢了,但新的一轮循环中并不需要上轮循环中
**数据支持,因此,重新赋值即可,但.浪费了时间.
*/
// i = size - 1,是因为size为一个int型所占的位数,要用一个数组保存它的每一位,所以得要一个和size一个大的数组
// 数组从0开始,所以它最大的一个成员是size - 1;
for (i = size - 1; i >= 0; i--, n >>= 1)// n >>=1,笑!!我得分析下它了.类比a+=1; >>是一个右移位操作符,因此它应为n = n >> 1
ps[i] = (1 & n) + '0';// 1 & n 只取n 的最后一位,其它的位都置0. + "0' 可以把数字转化为char类型
ps[size] = '\0';
return ps;
}
/* show binary string in blocks of 4 4位一组显示二进制字符串*/
void show_bstr(const char * str)
{
int i =0;// 6*sizeof(int);//这里可以控制输出的位数,前提是你自己保留的位数要能够保存你所要转换的那个数"不失真"所需要的位数
while (str[i]) /* not the null character */
{
putchar(str[i]);
if(++i % 4 == 0 && str[i])
putchar(',');
}
}