C++十进制int转换为十六进制char有什么比较好的方法?
UPDATE:
比如说 17 我希望变化后的结果是 char(0x00) char(0x11)
而是不是 “11” char("1") char ("1")
C++十进制int转换为十六进制char有什么比较好的方法?
UPDATE:
比如说 17 我希望变化后的结果是 char(0x00) char(0x11)
而是不是 “11” char("1") char ("1")
#include <stdio.h>
int main(int argc, const char *argv[])
{
int n = 17;
char arr[sizeof(int)] = { 0 };
for (int i = 0; i < sizeof(int); i++) {
arr[i] = (n >> (((sizeof(int) - 1) - i) << 3)) & 0xFF;
}
for (int i = 0; i < sizeof(int); i++) {
printf("0x%02X\n", arr[i]);
}
return 0;
}
这里实际上是将int
转换为等同大小字节数的char
数组。
一般int
是 4 字节,但这里使用sizeof(int)
来确定大小。
如果确定是 2 字节的话,直接这样就行了:
#include <stdio.h>
int main(int argc, const char *argv[])
{
int n = 17;
char arr[2] = { 0 };
arr[0] = (n >> 8) & 0xFF;
arr[1] = n & 0xFF;
for (int i = 0; i < sizeof(arr); i++) {
printf("0x%02X\n", arr[i]);
}
return 0;
}
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
搞嵌入式的朋友推荐了一个方法
x & 0xFF; x >> 8