gpt4 book ai didi

php - C++ 和 PHP 十六进制

转载 作者:太空宇宙 更新时间:2023-11-04 09:04:57 26 4
gpt4 key购买 nike

我在 c++ 中将整数转换为十六进制的代码,但在 php 中的输出不同

C++:

#include <iostream>
#include <stdlib.h>
#include <string>
#include <stdio.h>

using namespace std;

int main(){

string str1("100106014020");
int i;

i = atoi(str1.c_str());
printf ("HEX value is %X", i);

return 0;
}

output:
HEX value is 4EC88D44

PHP:

<?php
$num = '100106014020';
$nnum = (int)$num;
echo printf ("%X",$nnum);
?>

输出:174EC88D4410

如何在 php 中获得与在 c++ 中相同的十六进制值?

最佳答案

使用atoi 只是一个编程错误,因为您无法知道转换是否成功。正确使用的函数是 strtol (或 strtoll)。更正后的程序应如下所示:

#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <cerrno>

int main()
{
const char * const str1 = "100106014020";
char * e;
long i = std::strtol(str1, &e, 0);

if (e != 0)
{
std::printf("Conversion error: %s\n", strerror(errno));
}
else
{
std::printf("Conversion succeeded, value = 0x%lX\n", i);
}
}

对我来说,这意味着:

Conversion error: Numerical result out of range

关于php - C++ 和 PHP 十六进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13400327/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com