C++ 添加字符串和整数

C++ adding string and int

我的任务是将一个用 C++ 编写的小程序重写为 C#。

但是我遇到了我无法完全理解的这条线。是将字符串长度连接到字符串还是指针?

int n = _keyData * int(*(int*)(_chap + strlen(_chap) - 4));

这是变量:

short _ver = 12;
short _keyData = short(_ver * _ver);
char _chap[100]; // Hold time with format [%02d-%02d %02d:%02d:%02d:%03d]

*(int*)(_chap + strlen(_chap) - 4) 是一个严格的别名违规。将原始字节重新解释为 int 是类型双关语,在 C++ 中是不允许的(即使某些编译器容忍它)。

要修复它(假设是 little-endian 系统),您可以这样重写它:

short _ver = 12;
short _keyData = short(_ver * _ver);
char _chap[100]; // Hold time with format [%02d-%02d %02d:%02d:%02d:%03d]

int len = strlen(_chap);
int x = (int)(((unsigned)_chap[len - 1] << 24) |
              ((unsigned)_chap[len - 2] << 16) |
              ((unsigned)_chap[len - 3] <<  8) |
               (unsigned)_chap[len - 4]);
int n = _keyData * x;

巧合的是,现在将其移植到 C# 应该很容易。