我将消息长度声明为什么?整数还是字符?

时间:2019-04-30 20:36:09

标签: c++

我对编码还比较陌生,想知道如何在我的c ++代码中声明消息长度(mlen)和密文(clen)长度。但是,我不太确定我将它们声明为什么。 (int?char?unsigned long long?) 提供给我的代码中包含的公式为:

"\"C:\Java\jre8\bin\java\" -Djava.library.path=\"C:\some\path\lib\" -classpath \"some;long;classpath\" com.foo.app.Main"

提供给我的信息是:

它以320位的状态运行,带有64位的消息块。

更新:对这个不好的问题很抱歉,我意识到给我的消息长度是无符号的,而且是用我没有意识到的较小字体编写的。

1 个答案:

答案 0 :(得分:0)

如果对您的类型必须有多大的要求没有严格的要求,则应使用旨在表示大小的本机C ++类型:

std::size_t

std::size_tunsigned int等类型相比,unsigned short的主要优点是:

  1. 它能够保存任何C ++类型(包括数组)的最大可能大小(因为它被定义为sizeof运算符的结果类型)。
  2. 因此,通常会针对您的架构进行优化(例如RAM地址空间)。
  3. 通常用作表示new[]std::vector和STL大部分中的索引和长度的类型。由于您可能会使用此类数据结构和算法,因此可以避免在不同类型之间进行无用的转换,从而使代码更具可读性,而无需编译器警告。
  4. 代码中的类型std::size_t告诉您有关其语义的一些信息(索引和大小;隐含无符号)。其他unsigned int等整数类型可用于表示任何

有关其他信息,请查看cppreference.com

另一方面,如果您需要紧密打包数据(例如,用于网络协议),则应使用最小的类型,例如std::uint16_tstd::uint32_t等。