Delphi base将Binary转换为Decimal

时间:2016-09-11 22:20:07

标签: delphi delphi-7

我将二进制转换为十进制并将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?

2 个答案:

答案 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。此时无法恢复原始输入的长度。

因此,前进的道路是明确的。您必须记住原始二进制文件的长度以及等效小数。但是,一旦你得出了这个结论,你可能会想知道是否有更简单的方法。只需记住原始二进制值并保存自己必须从十进制转换回来。