64,680
社区成员
发帖
与我相关
我的任务
分享
BYTE hex[ 4]; // {0xFF, 0xFF, 0xFF, 0xFF};
BYTE dec[10] = {0}; // {0x04, 0x02, 0x09, 0x04, 0x09, 0x06, 0x07, 0x02, 0x09, 0x05};
const mulFactor[] = {0x06, 0x05, 0x05, 0x03, 0x06};
BYTE oneDec[5] = {0};
BYTE twoDec[5] = {0};
const BYTE one[] = {0, 1};
const int endian = (1 == *(short*)one) ? 1 : 0;
short one, two;
if(endian)
{
one = *(short*)hex;
two = *((short*)hex+1);
}
else
{
one = *((short*)hex+1);
two = *(short*)hex;
}
/*
1.通过对one,two逐位除10取余,分别填充oneDec,twoDec
假设one=65535,那么oneDec应该填充成{0x06, 0x05, 0x05, 0x03, 0x05}
假设two=10000,那么twoDec应该填充成{0x01, 0x00, 0x00, 0x00, 0x00}
2.用代码模拟小学计算乘法的方法:列竖式。先将one乘以65536 :
65535
× 65536
----------------
4294901760
将结果填充至dec数组内,涉及到进位时要在前面加。
3.用代码模拟小学计算加法的方法:列竖式。将dec的后面5位数值和twoDec逐位相加
4294901760
+ 10000
-----------------
4294911760
将结果填充至dec数组内,涉及到进位时要在前面加。
3.剩下基本就是把代码写出来调试了
*/
BYTE hex[ 4]; // {0xFF, 0xFF, 0xFF, 0xFF};
BYTE dec[10]; // {0x04, 0x02, 0x09, 0x04, 0x09, 0x06, 0x07, 0x02, 0x09, 0x05};
BYTE oneDec[5];
BYTE twoDec[5];
//模拟两个short相乘,这样取出short不用考虑字节序了
short one = *(short*)hex;
short two = *((short*)hex+1);
/*
1.通过对one,two逐位除10取余,分别填充oneDec,twoDec
假设one=65535,那么oneDec应该填充成{0x06, 0x05, 0x05, 0x03, 0x05}
假设two=10000,那么twoDec应该填充成{0x01, 0x00, 0x00, 0x00, 0x00}
2.用代码模拟小学计算乘法的方法:列竖式
65535
× 10000
----------------
将结果填充至dec数组内,涉及到进位时要在前面加。
3.剩下基本就是把代码写出来调试了
*/