php和vb.net中的变量转换和解释

时间:2010-02-10 14:10:15

标签: php vb.net variables

我有一些PHP代码如下。

<?php
    $value = -1924050635;
    echo "before:".$value;
    echo "<br/>";
    $value = sprintf('%u', $value);
        echo "<br/>";
    echo "after:".$value;

?>

在价值为-1924050635之前

值为2370916661

之后

我的问题是sprintf在这里做了什么。

如果我想在VB.Net中使用上述相同的php功能,我需要做什么。

1 个答案:

答案 0 :(得分:1)

php整数类型始终是有符号的(在您的情况下是32位宽)。即你让sprintf(%u)将有符号整数的位/再见序列解释为无符号整数。 你可以在VB.Net中做类似的事情,使用类System.BitConverter来获取有符号整数的byte()表示,然后从该序列创建一个无符号整数。

Module Module1
  Sub Main()
    Dim x As Integer = -1924050635
    Dim y As UInteger = BitConverter.ToUInt32(BitConverter.GetBytes(x), 0)
    System.Console.Write("y=" & y)
  End Sub
End Module

打印y=2370916661

(我不是VB.Net专家 - 可能有更简单的解决方案)