Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 无效号码。数字的精度限制为32位_Batch File - Fatal编程技术网

Batch file 无效号码。数字的精度限制为32位

Batch file 无效号码。数字的精度限制为32位,batch-file,Batch File,我有下面的批处理脚本,它根据一些事情来计算一个数字,这是一个相当大的数字,但是,这是它应该生成的(示例)76561197960287930 @echo off if NOT %1a == a goto recurse reg query HKCU\Software\Valve\Steam\Users > users.tmp echo. echo for /f "skip=1 delims=\ tokens=6" %%i in (users.tmp) do call %0 %%i d

我有下面的批处理脚本,它根据一些事情来计算一个数字,这是一个相当大的数字,但是,这是它应该生成的(示例)76561197960287930

@echo off

if NOT %1a == a goto recurse
reg query HKCU\Software\Valve\Steam\Users > users.tmp
echo.

echo  
for /f "skip=1 delims=\ tokens=6" %%i in (users.tmp) do call %0 %%i
del users.tmp
echo  

pause>nul
goto end

:recurse

set SID=%1
set /A SID=SID/2
set /A SID1=SID*2
set STEAMBIT=0
if NOT %SID1% == %1 set STEAMBIT=1


    echo UserID: %SID%
    echo %SID% > userid.txt
        SET /A Result = ( %SID% * 2 ) + ( %STEAMBIT% + 76561197960265728 ) 
    echo %result% > useridresult.txt
    goto end

:end

exit
是否有修复和/或解决方法?感谢

在“32位精度”中可以管理的最大正数是2147483647(通过
set/A 0x7FFFFFFF
获得),因此,如果您想使用更多的数字执行操作,只需根据所需的操作,在适当大小的块中拆分最大位数。例如,如果要执行乘法,则将大数分成4位一组(因为9999999999适合32位,而99999999不适合)。您可以在查看此方法的进一步说明

但是,这个问题非常简单:您只需要将一个大的(17位)数字添加到另一个数字上,这样就可以在每个9位数字的两部分中获得结果:

@echo off
setlocal

set SID=%1
set /A "STEAMBIT=SID&1, SID=SID/2"

    echo UserID: %SID%   SteamBit: %STEAMBIT%
    SET /A Low = ( %SID% * 2 ) + ( %STEAMBIT% + 960265728 ),  High = Low / 1000000000 + 76561197
    echo Result: %High%%Low:~-9%

此方法对Set/A文档中最多为
999999999

的SID号提供正确的结果:这些数字必须都在32位有符号整数(-2147483648到2147483647)的范围内,才能使用PowerShell或VBScript处理较大的数字。谢谢,我们将尝试此方法!