有没有一种方法可以将一些整数放入一个字符串中(通过连接),并且当该字符串逐字符读取并打印为十六进制时,这些数字的十六进制值等同于数字本身。
示例:
假设我有两个数字,6和8以及一个字符串" yahoo"。
在第一步中,我将它们连接起来并得到一个字符串
" 6yahoo8"使用snprintf()
。
在下一步中,我逐字符地读取字符串并打印 超出他们的十六进制值,
我希望获得最终输出:
{0x06,0x79,0x61,0x68,0x6F, 0x6F,0x08}。
但我的程序正在打印结果:
{0x36,0x79,0x61,0x68,0x6F, 0x6F,0x38}。
除第一个和最后一个字节外,此结果是正确的。 任何想法如何完成我想要的任务? 建议非常感谢。
我用来形成字符串的程序:
string encode_url() {
StringAccum sa;
string url;
const char *str = "yahoo";
int p = 6;
int q = 8;
sa.snprintf(1,"%x", p); // snprintf(len, format, value);
sa << str.c_str();
sa.snprintf(1, "%x", q);
url = string(sa.take_string().c_str());
return url;
}
我们使用的一些习惯函数就像StringAccum,它基本上是C ++中的String Accumulator。
答案 0 :(得分:0)
找到你必须查看ASCII字符代码的原因。
如果以十六进制转换8,则会得到0x38。类似于6你会得到0x36。
为什么你得到0x38而不是0x8因为这里的8是一个不是字符变量的字符串(比int更不明显的是普通整数类型的另一个,char。它基本上只是另一种int,但有不同的应用程序)。