从 C++ 中的 txt 文件中读取十六进制
Reading hexadecimals from a txt file in C++
我有一个txt文件,每行包含十六进制形式的整数,如下所示:232B2344A2BC34893DEF9433.....我想要一种优雅的方式来读取C++中的.txt文件并将它们存储在数组中,以便我可以对它们进行计算。同样给定十六进制 232B2344 说我想说出每个字节条目的值
首先包含一个标头
#include "sstream"
然后使用文件处理获取简单 char[] 数组字符串中的十六进制值。
夏亚斯特[100];
声明一个无符号的 int 变量...
unsigned int value;
然后声明一个"std::stringstream"变量,例如
std::stringstream ss;
ss<<std::hex<<str;
ss>>value;
现在,"值"以整数的形式包含文件中的十六进制值。
据您描述,文件中的每个数字都是一个 4 字节的无符号整数(适合 32 位)。这里你有一个 c++ 版本,用于解析文件并获取数字数组:
std::vector<std::string> fromFileToArray( const std::string & fileName )
{
std::string line;
std::vector<uint32_t> numbers;
std::stringstream ss;
uint32_t tmp;
std::ifstream numbersFile( fileName.c_str() );
while( numbersFile.good() )
{
getline( numbersFile, line );
ss << std::hex << line;
ss >> tmp;
numbers.push_back( tmp );
}
}
这个怎么样(虽然它是用 C 函数编写的,但可以帮助我移植它以使用C++函数):
const char hexstring[] = "deadbeef10203040b00b1e50", *pos = hexstring;
unsigned char val[12];
size_t count = 0;
/* WARNING: no sanitization or error-checking whatsoever - MAGIC. DO NOT TOUCH. */
for(count = 0; count < sizeof(val)/sizeof(val[0]); count++) {
sscanf(pos, "%2hhx", &val[count]);
pos += 2 * sizeof(char);
}
/* Does it work? */
printf("0x");
for(count = 0; count < sizeof(val)/sizeof(val[0]); count++)
printf("%02x", val[count]);
printf("n");
如果字符串中有奇数个十六进制数字,则必须确保以开头 0 为前缀。例如,上面的示例将错误地评估字符串"f00f5"
{0xf0, 0x0f, 0x05}
,而不是正确的{0x0f, 0x00, 0xf5}
。
要以十六进制格式读取值 - 使用 <iomanip>
中的std::hex
。就像这个非常简短的例子:
#include <iostream>
#include <iomanip>
int main() {
int value;
std::cin >> std::hex >> value;
std::cout << value;
}
只需读取数组包含元素的次数即可。
相关文章:
- 读取文件中所有可能的十六进制 16 字节序列并打印每个序列
- 在 c++ 中从文本文件中读取两个十六进制值
- 正在读取十六进制文件C++
- 写入和读取十六进制 TRAM QT 串行端口
- 从串行端口(POSIX)读取十六进制值
- C++如何从文件中读取十六进制字节并将其存储为指针
- char* 如何读取十六进制的这个整数?它在 ostream::write() 中是如何工作的
- 从 bin 文件 -c++ 中读取十六进制数字为每个字符 2 位数字
- 从 C++ 中的 txt 文件中读取十六进制
- 从ini文件中读取十六进制字符
- 正在从文件(C++)中读取十六进制值
- 如何从文件中读取十六进制并将其存储在无符号字符中
- QSerialPort 单独读取十六进制值
- 读取十六进制文件会产生错误的输出(跳过一些十六进制值)
- 从输入文件读取十六进制列
- 从流中读取十六进制文本格式0x
- 跳过行,然后从CSV文件读取十六进制值到2D数组
- 从文件中读取十六进制数字
- 使用GetPrivateProfileInt,GetPrivateProfileString读取十六进制值的正确方法是什
- 如何从数组中向后读取十六进制字符并将其转换为整型