unsigned short SpliceCharaters ( double b){ int val_int = (int)b; int kBinInt = val_int & 0x7ff; char kBinStr[12]; _itoa(kBinInt, kBinStr, 2); char B_HI_Bin[4]; strncpy(B_HI_Bin, kBinStr, 3); B_HI_Bin[3] = '\0'; char B_LO_Bin[9]; strncpy(B_LO_Bin, kBinStr + 3, 8); B_LO_Bin[8] = '\0'; int B_HI_Dec = strtol(B_HI_Bin, NULL, 2); int B_LO_Dec = strtol(B_LO_Bin, NULL, 2); unsigned short outdata = (B_HI_Dec << 8) | B_LO_Dec; return outdata; } 上面这个函数 传入值一定是一个负数,另外写一个函数 能将 通过此函数转出的值再转回去
时间: 2024-04-16 20:29:35 浏览: 95
要将通过`SpliceCharaters`函数转出的值再转回去,可以编写一个名为`ReverseSpliceCharaters`的函数,如下所示:
```cpp
double ReverseSpliceCharaters(unsigned short value) {
int B_HI_Dec = (value >> 8) & 0x07;
int B_LO_Dec = value & 0xFF;
char B_HI_Bin[4];
_itoa(B_HI_Dec, B_HI_Bin, 2);
char B_LO_Bin[9];
_itoa(B_LO_Dec, B_LO_Bin, 2);
char kBinStr[12];
strncpy(kBinStr, B_HI_Bin, 3);
strncpy(kBinStr + 3, B_LO_Bin, 8);
kBinStr[11] = '\0';
int kBinInt = strtol(kBinStr, NULL, 2);
double b = static_cast<double>(kBinInt);
return b;
}
```
在上述代码中,我们定义了一个名为`ReverseSpliceCharaters`的函数,该函数接受一个`unsigned short`类型的值作为参数。首先,我们从传入的值中提取出B_HI和B_LO的十进制值。然后,我们将这些十进制值转换为二进制字符串,将它们拼接起来,并使用`strtol`函数将二进制字符串转换回整数。最后,我们使用`static_cast`将整数转换为浮点数类型,并返回结果。
请注意,这里使用了与原函数相同的字符串操作和类型转换方法。也要注意,反向转回的值可能不会与原始输入值完全相同,因为在进行字符串和二进制之间的转换时可能会有一些精度丢失。
阅读全文