在这里“小端”是什么意思还不是很清楚。整数本身没有字节顺序;仅当您将它们切成小块时,字节序才会发挥作用。那么对您来说,哪些较小的部分是指:字节或字符。如果是字符,只需按正常方式转换,并将生成的字符串反转。如果是字节(或任何其他较小的部分),则每个单独的字节都可以表示为 : 的函数,int
计算i & 0xFF
低位字节,(i >> 8) & 0xFF
下一个最低字节,依此类推。(如果字节不是 8 位,则相应地更改移位值和掩码。)
关于您的第二段: an 的单个字节
int
不一定对应于字符,无论编码如何。例如,对于您显示的四个字节,它们都不对应于任何常用编码中的字符。
关于最后一段:要获得无符号整数的二进制表示,请使用与任何表示相同的算法:
std::string
asText( unsigned int value, int base, int minDigits = 1 )
{
static std::string digits( "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" );
assert( base >= 2 && base <= digits.size() );
std::string results;
while ( value != 0 || minDigits > 0 ) {
results += digits[ value % base ];
value /= base;
-- minDigits;
}
// results is now little endian. For the normal big-endian
std::reverse( results.begin(), results.end() );
return results;
}
以等于 2 的基数调用,这将为您提供二进制表示。