我将二进制转换为十进制并将Im转换为二进制。我的问题是二进制整数的长度。例如:
Convertx("001110",2,10) = 14
Convertx("14",10,2) = 1110
但是二进制文件的长度不是常数,那么如何才能获得前面带零的精确原始二进制文件?我怎样才能得到" 001110"而不是" 1110" ?
我在Delphi 7中使用此功能。 - > How can I convert base of decimal string to another base?
答案 0 :(得分:2)
您正在使用的函数返回一个字符串,该字符串是表示已转换值所需的最短长度。
该字符串前面的任何零都只是填充 - 它们不会改变所表示的二进制值。如果你需要一个最小长度的字符串,那么你需要添加这个" padding"你自己。例如如果你想要一个"字节的二进制表示" (即8个二进制数字)然后你需要的最小长度为8:
binStr := Convertx("14",10,2);
while Length(binStr) < 8 do
binStr := '0' + binStr;
如果您需要&#34;填充&#34;中包含的确切数量的零。当从二进制转换为十进制然后再回到&#34;原始&#34;时的一些原始二进制值二进制,然后这是不可能的,除非你单独记录有多少填充零或原始字符串的长度,包括那些零。
即。在你的例子中,ConvertX函数不知道(现在可以弄清楚)数字&#34; 14&#34;要求转换为二进制最初是从带有2个前导零的6位二进制字符串转换而来,而不是带有4个前导零的8位二进制(或带有12个前导零的16位二进制等)。
答案 1 :(得分:1)
你所希望的是不可能的。考虑
Convertx('001110', 2, 10)
和
Convertx('1110', 2, 10)
这两个都返回相同的输出,14。此时无法恢复原始输入的长度。
因此,前进的道路是明确的。您必须记住原始二进制文件的长度以及等效小数。但是,一旦你得出了这个结论,你可能会想知道是否有更简单的方法。只需记住原始二进制值并保存自己必须从十进制转换回来。