我需要将一个整型数转换成两个字节的十六进制值存储到char数组中,使用C语言。请问应该如何实现?
我需要将一个整型数转换成两个字节的十六进制值存储到char数组中,使用C语言。请问应该如何实现?
void WORD2WBYTE(BYTE WBYTE[2], WORD Value) {
BYTE tmpByte[2];
// Converts a value from word to word byte ----
memcpy(tmpByte, (BYTE*) & Value, 2);
WBYTE[1] = tmpByte[0];
WBYTE[0] = tmpByte[1];
}
typedef unsigned char BYTE;
typedef unsigned short WORD;
使用示例:
我们想要实现这个目标:
integer = 92
byte array in hex:
a[0] = 0x00;
a[1] = 0x5c;
unsigned char _byteHex[2];
WORD2WBYTE(_byteHex, 92);
int bar;
// ...
char foo[sizeof(bar) * 2 + 3];
sprintf(foo, "0x%x", bar);
unsigned int hex16 = ((unsigned int) input_int) & 0xFFFF;
input_int
是您想要转换的数字。 hex16
将包含input_int
的最低有效2个字节。如果您希望将其打印到控制台上,请使用%x
作为格式说明符,而不是%d
,它将以十六进制格式打印。
你可以使用这个,它简单易用,方便转换。
typedef union {
struct hex{
unsigned char a;
unsigned char b;
}hex_da;
short int dec_val;
}hex2dec;
hex2dec value;
value.dec_val=10;
现在十六进制值已存储在hex_da结构中,可以访问它以供进一步使用。
针对动态长度的十六进制
string makeFixedLengthHex(const int i, const int length)
{
std::ostringstream ostr;
std::stringstream stream;
stream << std::hex << i;
ostr << std::setfill('0') << std::setw(length) << stream.str();
return ostr.str();
}
但是负数需要自己处理。