型指定する以外はCもPythonと同じように書ける。
#include <iostream> using namespace std; uint16_t bin2bcd_dubdab(uint16_t _bin) { uint8_t BITS_BCD = sizeof(_bin) * 8; uint16_t bcd = 0; for (int i = BITS_BCD - 1; i > 0; i--) { bcd = (uint32_t)(bcd) << 1 | (_bin >> i & 1); for (int j = BITS_BCD; j > -1; j -= 4) { if ((bcd >> j & 0xF) > 4) { bcd += 3 << j; } } } return (uint32_t)(bcd) << 1 | (_bin & 1); } int main(void) { uint16_t val = 9876; printf("0x%x\n", bin2bcd_dubdab(val)); return 0; }