【发布时间】:2015-01-11 17:21:01
【问题描述】:
是将 unsigned char / int 转换为 hex,麻烦的是没有正确翻译 ascci 表: 原始:0D,转换:AD 代码:
char int_to_hex(int d) {
if (d < 0) return -1;
if (d > 16) return -1;
if (d <= 9) return '0' + d;
d -= 10;
return (char)('A' + d);
}
void uint_to_hex(unsigned char in, char **out, int *olen) {
int i = 0;
int remain[2];
int result = (int)in;
while (result) {
remain[i++] = result % 16;
result /= (int)16;
}
for (i = 1; i >= 0; --i) {
char c = int_to_hex(remain[i]);
if( (int)c == -1 ) { continue; }
*((*out) + (*olen)) = (char)c; (*olen)++;
}
}
哪里不对?..
【问题讨论】:
-
out很奇怪,你也应该展示一下你是怎么称呼它的。另外,为什么不使用例如snprintf()要这样做吗? -
错误情况是什么?
-
可能是坏的来电者。
-
我觉得应该是
d >= 16。然后您似乎对演员表的概念有疑问。这里的一切都是多余的。 -
为所有人发送,已解决: if(d >= '0' && d
标签: c hex type-conversion unsigned unsigned-char