我搜索了很多以了解如何将我的 unsigned char* 转换为可打印的十六进制字符串。到目前为止,我稍微了解了它是如何工作的以及有符号和无符号字符之间的区别。
你能告诉我我找到的这个功能是做什么的吗?并帮助我开发一个将 unsigned char*(这是一个散列字符串)转换为可打印字符串的函数?
以下函数是否执行此操作:
- 它遍历 char 数组字符串的每个第二个字符
- 在每个循环中,它读取位置 string[x] 处的 char,将其转换为无符号数(精度为 2 位小数)然后将转换后的 char(number?) 复制到变量 uChar。
- 最后它将 unsigned char uChar 存储在十六进制字符串中
void AppManager :: stringToHex( unsigned char* hexString, char* string, int stringLength )
{
// Post:
unsigned char uChar = 0;
for ( int x = 0; x<stringLength; x+=2 )
{
sscanf_s(&string[x], "%02x", &uChar);
hexString[x] = uChar;
}
}
所以我猜这意味着它将字符串中的字符转换为无符号(&2dcp)以确保它可以正确存储十六进制字符串。为什么要保留 2 个小数位,& 不会从有符号(如果该字符有符号)到无符号的简单转换导致完全不同的字符串?
如果我有一个 unsigned char* 我怎么能把它转换成可以让我在屏幕上打印出来的东西?