【发布时间】:2013-01-14 10:38:36
【问题描述】:
我有一个这样的字符串:
315c4eeaa8b5f8aaf9174145bf43e1784b8fa00dc71d885a804e5ee9fa40b16349c146fb778cdf2d3aff021dfff5
有没有办法将它从文件中一次读取到字符串对象中,记住每 2 个字符都是字节的十六进制表示? IE。我需要从十六进制转换为字符的读数。
更新
伙计们,请仔细阅读我的要求。
我能够编写转换函数并沿着字符串循环。
但是我需要一次将一个十六进制字符串读取为一个字符字符串。
没有任何循环。没有手动转换。
类似cin >> ...some string variable...
谢谢。
更新2
想象一下我有字符串"315c4eeaa8b5"。我想写一些类似cin >> string_var 的东西,并得到恰好包含"'0x31','0x5c','0x4e','0xea','0xa8','0xb5'" 的string_var。请注意,最后一个是序数 std::string。 IE。 0x31,0x5c,etc 是字符代码。
希望它能让事情更清楚。
【问题讨论】:
-
您的更新使其变得更加模糊。你想把这些数据从 hex-ascii 转换成任何东西 吗? 听起来您希望将字符对从 hex-ascii 转换为它们的 byte-equivs,在您提供的示例中,它恰好是下面的实际 ascii 字符。那是对的吗?所有这些都没有循环,没有转换,并且隐藏在某个提取运算符中。?
-
是的,我确切地知道它们是什么,不,您无法通过简单的提取运算符得到它(除非您编写它并在其中执行 2-char-to-ordinal-code 转换说提取器)。在标准库中没有可以做你想做的事的灵丹妙药。而且您已经说过您可以/已经编写/编写了转换循环,还有什么其他的吗?
-
我问过这个问题,我必须自己进行转换。
-
恐怕你会。 iostreams 库可以使它变得非常简单,或者通过几个表查找和一个 4 位移位的或运算符来实现较低级别。这取决于你,但恐怕标准库中的罐装解决方案是行不通的。