我可以找到任何有效的实现,所以我用sccanf写了一个,但是我有一个问题,我将const char转换为unsigned char“FFx16”形式,但是它转换所有字符但是第二个最后一个字符它会改变它对于printf输出的“FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F”,(我已将测试函数留给测试),我知道有c ++版本,但我更喜欢纯c,所以无论如何继续我的尝试,但仍然做了工作:(
代码:
#include <stdlib.h>
#include <stdio.h>
#include "util.h"
#include <string.h>
char* hex_to_char(const char* hex, int len) {
char *_a = malloc(len / 2);
int num = 0;
unsigned _b;
while(num < len) {
sscanf(&hex[num], "%02X", &_b);
_a[num/2] = _b;
num++;
}
return _a;
}
用法:
const char* buf2 = "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF";
unsigned char start_seed[16];
int t = 0;
char* buf = hex_to_char(buf2, 32);
if(debug == 1) { printf("Start Seed : "); }
while(t < 16) {
start_seed[t] = (unsigned char)buf[t];
if(debug == 1) { printf("%02X", buf[t]); }
t++;
}
if(debug == 1) { printf("\n"); }
//输出:FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F
答案 0 :(得分:0)
使用num += 2
代替num++
。
–Wintermute