【发布时间】:2015-06-19 11:33:42
【问题描述】:
我写了以下函数。此函数接收十六进制值的地址,例如0x4571 并根据十六进制值的位位置计算日、月和年。
void fat_dir_date(char *dateAr) {
const unsigned int MaskDayOfMonth = 0x1F; //0000000000011111
const unsigned int MaskMonthOfYear = 0x1E0; //0000000111100000
const unsigned int MaskYear = 0xFE00; //1111111000000000
unsigned int DayOfMonth = hex & MaskDayOfMonth; //AND Bit Operation
unsigned int MonthOfYear = hex & MaskMonthOfYear; //AND Bit Operation
MonthOfYear = MonthOfYear >> 5; //Bitshift to right position
unsigned int Year = hex & MaskYear; //AND Bit Operation
Year = Year >> 9; //Bitshift to right position
printf("%d.%d.%d", DayOfMonth, MonthOfYear, 1980+Year);
}
计算工作正常。我在整数 DayOfMonth、MonthOfYear 和 Year 中得到了正确的数字。但是,我不想用 printf 将它们打印出来,而是想将这些值返回给调用者函数。以最好的方式连接在单个值或字符串中。
在 C 中解决这个问题的最佳方法是什么?
【问题讨论】:
-
寻找
best方式的问题不适合S.O -
也许你可以把它们都放在堆中创建的
struct中,然后返回那个struct的地址。只是我的意见。 -
你对“工作正常”有一些奇怪的定义。代码甚至无法编译。
-
假设
dateAr指向一个足够大的缓冲区,您可以使用sprintf将结果字符串放入dateAr。
标签: c arrays char return c-strings