C++:将unsigned long long int转换为vector <char>,反之亦然

ved*_*eda 4 c++ syntax integer vector long-integer

任何人都可以告诉我如何将unsigned long long int转换为vector,反之亦然.

为了从unsigned long long int转换为vector,我尝试了以下方法:

unsigned long long int x;
vector<char> buf(sizeof(x));
memcpy( &buf[0], &x, sizeof( x ) );
Run Code Online (Sandbox Code Playgroud)

当我测试x = 1234567890时,它失败了.但是,当我尝试使用较小的x值(比如1-100)时,它的工作原理......

为了将vector转换为unsigned long long int,我使用了:

   unsigned long long int =  (unsigned long long int)buf[0];
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我该怎么做.

Mar*_*k B 7

请记住,复制字节不会跨平台移植.你的memcpy看起来很好,所以为什么不在回来的路上重新创建它?您编写的内容只需要使用向量的第一个字节并将其转换为unsigned long long可解释为什么它适用于小数字的原因.

尝试这样做,以便从向量中取回值:

unsigned long long int x;
memcpy(&x, &buf[0], sizeof(x));
Run Code Online (Sandbox Code Playgroud)

  • 呵呵,如果你在一个大端系统上尝试过他现在的方法,buf [0]只会包含任何东西,如果你有一个非常大的x值. (2认同)