c - 格式化 C 字符串

标签 c string hex

我需要按以下格式发送消息:

"\x9F\x02\x06\x00\x00\x00\x07\x00\x00\x9F\x03\x06\x00\x00\x00\x00\x00\x00\x9A\x03\x15\x04\x24"(十六进制字节)

最后三个十六进制字节代表日期。

每次发送此消息时,我都需要从系统(支付终端)检索日期,系统给出的日期有一个字符串格式:

“150424”

问题是我需要将此日期格式化为十六进制字节,然后将结果与消息的其余部分连接起来!

谁能帮我解决这个问题吗?

最佳答案

编辑:好的,现在我明白了这个问题,这就是答案(我认为^^)。

他的问题是他收到的日期为 char*(例如“150424”),并且他想从这些字符生成 => '\x15' '\x04' '\x24'

这是我的做法:

int i = 0;
char myStr[23] = "\x9F\x02\x06\x00\x00\x00\x07\x00\x00\x9F\x03\x06\x00\x00\x00\x00\x00\x00\x9A\x03\x00\x00\x00";

// get today's date
char date[6] = "150424";
int converted = strtol(date, NULL, 16);

myStr[20] = (converted & 0xFF0000) >> 16;
myStr[21] = (converted & 0xFF00) >> 8;
myStr[22] = converted & 0xFF;

printf("[%x", myStr[i] & 0xff);
for (i=1 ; i<23 ; ++i) printf(", %x", myStr[i] & 0xff);
printf("]\n");
return 0;

输出

[9f, 2, 6, 0, 0, 0, 7, 0, 0, 9f, 3, 6, 0, 0, 0, 0, 0, 0, 9a, 3, 15, 4, 24]
<小时/>

仅供引用:

你说你不需要将 15 转换为 0x0F,但这听起来很奇怪,因为 0x15 与当时的 15 没有任何共同之处......

如果你想用小数来代替:

char date[6] = "150424";
int converted = strtol(date, NULL, 10);

myStr[20] = (converted / 10000);
myStr[21] = (converted / 100) % 100;
myStr[22] = converted % 100;

然后输出变为:

[9f, 2, 6, 0, 0, 0, 7, 0, 0, 9f, 3, 6, 0, 0, 0, 0, 0, 0, 9a, 3, f, 4, 18]

希望有帮助

关于c - 格式化 C 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29843969/

相关文章:

c - 在嵌入式C中,如何将 "Unsigned Char"形式的返回十六进制值转换为可用的 "Integer"类型

c - execve() 返回任何命令的错误

c - QT Creator CMake 未设置 C 编译器路径

javascript - 在父 div 中获取文本

java - 逐行读取 Transformer 结果 (Java)

python - 将 MATLAB 字符串数据写入 csv ,然后从 python 作为字符串调用 csv 数据

c - 与 while(1) 并行运行时中断计时器卡住

c - 从 C 列出 Linux 中的目录

c++ - C++ 十六进制输出到字符串

excel - 如何将 HEX 转换为 BIN,在 EXCEL 2010 中一次一个字符