我正在尝试从txt文件中读取hexa数据(颜色值为0xffffffffff)...
但我不知道如何阅读....
我声明颜色值像'uint color',我想通过txt文件更改值。
如果我使用int数据我可以使用'atoi'函数,但是我可以使用uint函数吗?
答案 0 :(得分:2)
您可以使用strtoul
strtoul
实际上会返回一个长整数,因此您可以执行以下两项操作之一:
示例用法:
char *endptr;
unsigned long ul = strtoul(str, &endptr, 16);
if (str == endptr)
// error, no data was converted
// just truncate
unsigned int utrunc = (unsigned int)ul;
// or you can first check if it fits
if (ul < UINT_MAX)
unsigned int ufit = (unsigned int)ul;
答案 1 :(得分:1)
您可以直接从文件中读取十六进制数字:
unsigned int n;
fscanf(fd,"%x",&n);
答案 2 :(得分:1)
在C ++中,您可以将hex
操纵器与std::istream
一起使用:
unsigned int Read_Value(std::istream& input)
{
unsigned int value;
input >> hex >> value;
return value;
}
答案 3 :(得分:0)
如果您不喜欢我的前任发布的漂亮的自动化方法,您可以随时手动执行此操作...
const char _hex[] =
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x00\x00\x00\x00\x00\x00"
"\x00\x0A\x0B\x0C\x0D\x0E\x0F\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x0A\x0B\x0C\x0D\x0E\x0F\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00";
int color;
char color_txt[6]="DD1173";
color = _hex[color_txt[5]]
+ _hex[color_txt[4]]<<4
+ _hex[color_txt[3]]<<8
+ _hex[color_txt[2]]<<12
+ _hex[color_txt[1]]<<16
+ _hex[color_txt[0]]<<20;
当然有更优雅的方法 - 在函数中使用条件来将十六进制char转换为int,循环遍历值等等。