【发布时间】:2016-03-01 16:04:14
【问题描述】:
您好,我正在尝试开发一个 C++ 函数或算法,其行为类似于位移该函数将始终返回从 0 到 99999999 范围内的任何数字输入的 4 字节 00 00 00 00
输入 (int) -> 预期输出(字符或字符串)
0 -> 00 00 00 00
20 -> 00 00 20 00
200 -> 00 02 00 00
2000 -> 00 20 00 00
99999999-> 99 99 99 99
并且可以反转以返回原始数字。
输入(字符或字符串)-> 预期输出(int/double)
00 00 20 00 -> 20
00 02 00 00 -> 200
00 20 00 00 -> 2000
99 99 99 99 -> 99999999
编辑:
这是我的代码。它接近于我正在寻找的东西,但仍在进行中:
void Convert_to_Decimal(std::string str)
{
double ret;
///insert . after string number 6.
str.insert(5,1,'.');
str.erase(0, str.find_first_not_of('0'));
///remove leading zeros
ret =std::stod(str.c_str());
printf("%g\n", ret);
}
Convert_to_Decimal("00020000");
我将不胜感激任何解决此问题的指针或解决方案,在此先感谢您
【问题讨论】:
-
你能把你写的代码贴出来吗?好像不太难,先用
strtol把字符串转成整数,然后解析小数部分完成整数,最后把整数转成BCD输出字节。 -
00 00 00 004 位怎么样?如果它可以包含 8 个十进制数字,那么它肯定是超过 4 位的信息。另外,如何将整数转换为不同格式的字符串位移? -
@kelvinWells 我不知道该怎么称呼它,这就是为什么我说它类似于位移,更重要的是它的 4 字节数据用于串行端口命令@chqelie
20的 bcd 格式是 @ 987654331@它没有达到我想要实现的目标 -
看起来它只是带有隐式小数点的 BCD。您在编写此转换的代码时遇到了什么问题?
-
看起来你之前的大部分问题都是关于这个问题的?一些一般性建议:您可能需要退后一步,确保您首先了解底层算法 - 尝试为您不完全理解的东西编写代码是一种随意的方法 - 看看你是否可以用铅笔和纸来做首先,然后才尝试编写代码。