C/ c++从整数到十六进制到char数组到char
C/C++ integer to hex to char array to char
嗯,我一直试图将这个整数转换成十六进制,并成功地做到了这一点,但我需要使用这个十六进制设置的东西。现在我需要使用一个char而不是一个char数组。如果不手动设置,其他方法都不起作用。也许问题在于我使用sprint转换为十六进制的问题,但无论哪种方式,我确信有一种方法来完成这项任务。现在我需要改变的是让输出是char z但我还没有找到让它工作的方法。非常感谢任何帮助。由于
编辑:现在这段代码可能没有直接意义,因为它是不完整的,我看到没有目的输入不相关的代码。int x永远不会超过100,关键是要把它转换成十六进制,然后把它写进我的内存中。所以我一直在试图找出如何将整数转换成十六进制成一个字符。nonstring就像有人指出的那样,即使sprintf将其转换为存储在char中的字符串,正如我刚刚注意到的。但我需要将整型转换为十六进制并将其赋值给字符变量,以便稍后使用。这就是我被困住的地方。我不知道最好的方法是在不使用字符串和其他东西的情况下,以一种格式和方式完成所有这些。VOID WriteSetting(int x)
{
char output[8];
sprintf(output, "0x%X", x);
char z = 0x46
unsigned char y = z
}
工作代码:VOID WriteSetting(int x)
{
unsigned char y = (unsigned char)x;
Settingdb.Subset.Set = y;
}
如果你想要的是:
WriteSetting(70);
或
WriteSetting(0x46);
执行与
相同的操作char z = 0x46;
unsigned char y = z;
那么你所需要做的就是:
void WriteSetting(int x)
{
unsigned char y = x;
}
整数没有任何固有的基数——它们只是数字。unsigned char y = 0x46;
和unsigned char y = 70;
之间没有任何区别
你试过了吗
printf("0x%X", z);
虽然c++标准没有明确要求,但字符的大小有时是一个字节,有时是一个整数4字节。我想这就是为什么你使用4个字符的数组。
所以当你有一个整数类型,并试图把它塞进一个字符时,你会失去精度。
注:关于数据类型大小的更精确的解释如下:c++标准规定了int (long类型)的大小是多少?
void WriteSetting(unsigned char *y, int x){
if(x > 100){
fprintf(stderr, "x value(%d) is invalid at %sn", x, __func__);
return ;
}
*y = x;//There is no need for conversion probably
}
相关文章:
- 是否可以在C++中获取 CHAR 的有效十六进制地址?
- char* 如何读取十六进制的这个整数?它在 ostream::write() 中是如何工作的
- 从char阵列中提取十六进制数字
- 十六进制到十六进制char []
- 我如何格式化十六进制中“未签名char”阵列的值
- C++/C:Char[]的前缀长度(以字节为单位)(二进制/十六进制)
- 将int转换为十六进制并将其存储到char缓冲区中
- 将十六进制数的 char[] 转换为对应于 ASCII 表中十六进制数字的字母的 char[] 并反转
- Ofstream 写入十六进制而不是 char*
- 将整数的 char* 数组转换为十六进制
- 将char数组转换为十六进制数组(C++)
- 将包含十六进制值的字符串转换为c中的char字节
- 如何在python中将包含十六进制值的无符号char*数组写入文件
- 如何从具有十六进制二进制数据的 char* 加载流字符串
- 如何从十六进制转换为int和char
- C++:将char*中的十六进制解释为uint8_t
- 我如何从ASCII转换到十六进制值,也增加char指针
- 十六进制值00到ASCII或char
- C/ c++从整数到十六进制到char数组到char
- c++ char十六进制值到字节