Sun Jun 4 14:54:00 UTC 2023 inscode

上级 33683ae7
void put_oct(unsigned int x, char* buffer, int n) {
char start = '0';
while(x){
n--;
buffer[n] = start + x % 8;
x >>= 3;
}
}
void bin_to_hex(const void *data, uint32_t len, char *out) {
static const char *const lut = "0123456789abcdef";
uint32_t i;
for (i = 0; i < len; ++i) {
uint8_t c = ((uint8_t *)data)[i];
out[i * 2] = lut[c >> 4];
out[i * 2 + 1] = lut[c & 15];
}
void put_oct(unsigned int x, char* buffer, int n) {
char start = '0'; // 定义一个字符变量 start,值为 '0'
while(x){ // 循环执行,直到 x 为 0
n--; // 将 n 减 1
buffer[n] = start + x % 8; // 在 buffer 数组的第 n 个位置上存储字符 start 和 x 除以 8 取余数的和
x >>= 3; // 将 x 右移 3 位,即将 x 除以 8
}
}
/**
以上代码是一个C语言函数,函数名为put_oct,传入参数有三个:一个无符号整型数x,一个指向字符数组的指针buffer,一个整型数n。函数的作用是将无符号整数x转换成八进制数后存储在buffer数组中,并且转换后的八进制数占用的长度为n。
具体实现上,代码通过循环将x不断右移3位(即除以8),根据余数得到每一位的八进制数码,将其存储在buffer数组中。循环时,通过n--将n减1来记录当前已经存储了几位八进制数,同时用start变量来记录八进制数的起始字符,即字符'0'。
需要注意的是,函数中缺失了一个运算符,应该将start x % 8改为start + x % 8,将八进制数码转换成对应的字符后再存储在buffer数组中。
*/
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册