C++ 数字系统的翻译

C++ 数字系统的翻译,c++,algorithm,int,decimal,C++,Algorithm,Int,Decimal,我有三个十进制的数字,它们使自己多了一个十进制数字(120*256+111)*256+200=7892936-十进制。我保留这个数字是因为我有一个可变的字节数来写这个数字 Q:如何执行反向操作??如果我需要转换 7892936到 您可以使用位掩码和右移。以下可能会有所帮助: std::array<std::uint8_t, 4> convert(std::uint32_t u) { return { (u >> 24) & 0xFF,

我有三个十进制的数字,它们使自己多了一个十进制数字(120*256+111)*256+200=7892936-十进制。我保留这个数字是因为我有一个可变的字节数来写这个数字

Q:如何执行反向操作??如果我需要转换 7892936到


您可以使用位掩码和右移。以下可能会有所帮助:

std::array<std::uint8_t, 4> convert(std::uint32_t u)
{
    return {
         (u >> 24) & 0xFF,
         (u >> 16) & 0xFF,
         (u >>  8) & 0xFF,
         u & 0xFF
    };
}
std::数组转换(std::uint32\u)
{
返回{
(u>>24)和0xFF,
(u>>16)和0xFF,
(u>>8)和0xFF,
u&0xFF
};
}

您可以使用位掩码和右移。以下可能会有所帮助:

std::array<std::uint8_t, 4> convert(std::uint32_t u)
{
    return {
         (u >> 24) & 0xFF,
         (u >> 16) & 0xFF,
         (u >>  8) & 0xFF,
         u & 0xFF
    };
}
std::数组转换(std::uint32\u)
{
返回{
(u>>24)和0xFF,
(u>>16)和0xFF,
(u>>8)和0xFF,
u&0xFF
};
}

在循环中使用重复的模和除运算进行通用整数-基数转换。对特定的基础进行优化是可能的,但不应该真正让您担心


此外,您可能没有十进制形式的数字。你有数字。除非将它们存储为字符串,否则由计算机来存储它们,并将它们存储为二进制。

在循环中使用重复的模和除法操作进行通用整数-基数转换。对特定的基础进行优化是可能的,但不应该真正让您担心


此外,您可能没有十进制形式的数字。你有数字。除非您将它们存储为字符串,否则由计算机来存储它们,并将它们存储为二进制。

您只需按相似的顺序执行模数和除法:

int val = 7892936;
while(val > 0){
    int mod = val%256;
    print mod;
    val /= 256;
}
因此,结果将是:

200
111
120

您只需按相似的顺序进行模数和除法:

int val = 7892936;
while(val > 0){
    int mod = val%256;
    print mod;
    val /= 256;
}
因此,结果将是:

200
111
120

分别使用ff、ff00和ff0000执行和。

分别使用ff、ff00和ff0000执行和