【发布时间】:2011-10-03 01:31:04
【问题描述】:
我已经搜索了很多以了解如何将我的 unsigned char* 转换为可打印的十六进制字符串。到目前为止,我稍微了解了它的工作原理以及有符号和无符号字符之间的区别。
你能告诉我我找到的这个函数是做什么的吗?并帮助我开发一个将 unsigned char*(散列字符串)转换为可打印字符串的函数?
以下函数是否执行此操作:
- 它遍历 char 数组字符串的每个第二个字符
- 在每个循环中,它读取字符串 [x] 位置处的字符,将其转换为无符号数(精度为 2 位小数),然后将转换后的字符(数字?)复制到变量 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*,我该如何将它转换成可以让我在屏幕上打印出来的东西?
【问题讨论】:
标签: c++ unsigned-char