gpt4 book ai didi

c++ - 在 C++ 中将 unsigned long 转换为 char* 的最佳方法是什么

转载 作者:行者123 更新时间:2023-11-28 00:01:50 24 4
gpt4 key购买 nike

我需要通过套接字发送一些unsigned long。由于 unsigned long 是 4 字节,接收方只需要 4 字节。我写的转换函数你会在下面找到,但前提是必须存储在 char 中的数字不大于 127 resp。 0x7F。对于更大的 0x7f 值,我希望根据扩展 ASCII 表 ( http://www.asciitable.com/ ) 的字符将存储在 char 中,但事实并非如此。例如,对于 0x90,什么都没有存储。我正在使用带有 Unicode 字符集的 VS12。

知道如何使转换正确吗?

void number2char(unsigned long number, char* nrAsByte){
std::stringstream numberSS;
numberSS << std::hex << number;
int length = numberSS.str().length();
length = length / 2.0 + 0.5;
nrAsByte = new char[sizeof(number)]();
std::fill(nrAsByte, nrAsByte + length, '\x20');
while (length > 0){
int lastTwo = (number & 0xff);
number >>= 8;
unsigned char a = lastTwo; // this doesn't work if lastTwo > 0x7F
std::memcpy(nrAsByte + length - 1, &a, 1);
--length;
}
}

我对代码感到抱歉,它没有经过我很好的测试并且包含错​​误,请不要使用它,而是按照答案中的建议

最佳答案

为什么不是这样的:

void number2char(unsigned long number, char* nrAsByte){
unsigned char *dst= reinterpret_cast<unsigned char *> nrAsByte;
for (int i=0; i<sizeof(unsigned long); ++i) {
*dst++= number & 0xFF;
number >>= 8;
}
}

关于c++ - 在 C++ 中将 unsigned long 转换为 char* 的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38345592/

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