我有一些PHP代码如下。
<?php
$value = -1924050635;
echo "before:".$value;
echo "<br/>";
$value = sprintf('%u', $value);
echo "<br/>";
echo "after:".$value;
?>
在价值为-1924050635
之前
值为2370916661
我的问题是sprintf在这里做了什么。
如果我想在VB.Net
中使用上述相同的php功能,我需要做什么。
答案 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专家 - 可能有更简单的解决方案)