64,654
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
unsigned int iv,i;
unsigned char BCD[5];//定长10位BCD码
unsigned char sv[11];
void main() {
iv=123456789;//最大10位无符号正整数
//INT2BCD
sprintf(sv,"%010u",iv);
for (i=0;i<10;i+=2) {
BCD[i/2]=(sv[i]<<4)|(sv[i+1]&0x0F);
}
printf("BCD=%02x%02x%02x%02x%02x\n",BCD[0],BCD[1],BCD[2],BCD[3],BCD[4]);
//BCD2INT
for (i=0;i<10;i+=2) {
sv[i]='0'|(BCD[i/2]>>4);
sv[i+1]='0'|(BCD[i/2]&0x0F);
}
sscanf(sv,"%010u",&iv);
printf("iv=%010u\n",iv);
getch();
}
#include <iostream>
void printf_by_byte(const char* str) {
int i = 0;
while (*(str + i) != '\0' && *(str + i + 1) != '\0') {
std::cout << "0x" << *(str + i) << *(str + i + 1) << std::endl;
i += 2;
}
if (*(str + i + 1) == '\0')
std::cout << "0x" << *(str + i) << '0' << std::endl;
}
int main(int argc, char* argv[]) {
if (argc != 2)
return -1;
printf_by_byte(argv[1]);
return 0;
}
#include <string.h>
#include <stdio.h>
void print(const char* str)
{
int len = strlen(str);
char hex[3];
int h = 0;
int i;
for(i = 0; i < len; i++)
{
if(h == 0)
{
hex[h++] = str[i];
if(i == len - 1)
{
hex[h++] = '0';
hex[h] = '\0';
printf("0x%s\n", hex);
}
}
else
{
hex[h++] = str[i];
hex[h] = '\0';
printf("0x%s\n", hex);
h = 0;
}
}
}
int main(void)
{
print("1234567892345");
return 0;
}
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
static unsigned char asc2hex[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
0, 10, 11, 12, 13, 14, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 10, 11, 12, 13, 14, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};
char * strpack(const char *src, size_t len, char *dst)
{
unsigned char *from, *to, *end;
from = (unsigned char *)src;
to = (unsigned char *)dst;
for (end = to + len / 2; to < end; from += 2, to++)
*to = (asc2hex[*from] << 4) | asc2hex[*(from + 1)];
return dst;
}
int main(int argc, char *argv[])
{
char str[1024];
char hex[1024];
int i;
int len;
fgets(str, sizeof(str), stdin);
len = strlen(str);
if (len > 0 && str[len - 1] == '\n') {
str[len - 1] = '\0';
--len;
}
if (len % 2) {
strcat(str, "0");
++len;
}
strpack(str, len, hex);
for (i = 0; i < len / 2; ++i) {
printf("0x%02x\n", (unsigned char)hex[i]);
}
return 0;
}