int to hex

int类型,long类型装换成16进制

char *printNumber(unsigned long n, uint8_t base)
{
  static char buf[8 * sizeof(long) + 1]; // Assumes 8-bit chars plus zero byte.
  char *str = &buf[sizeof(buf) - 1];

  *str = '\0';

  // prevent crash if called with base == 1
  if (base < 2) base = 10;

  do {
    char c = n % base;
    n /= base;

    *--str = c < 10 ? c + '0' : c + 'A' - 10;
  } while(n);
  return str;
}
### 将 Python 中的整数转换为十六进制格式并发送原始 HEX 数据 在 Python 编程环境中,可以通过内置函数将整数转化为十六进制字符串表示形式。然而,在串口通信场景下,如果希望直接发送的是未经 ASCII 或其他编码转化过的纯二进制数据,则需进一步加工这些十六进制值。 #### 整数转十六进制字符串 Python 提供了一个简单的方法来完成这一任务:`hex()` 函数会把一个整型变量转变为形似 `'0x...'` 开头的小写十六进制字符串[^4] 。不过对于串口通讯来说这还不够,因为最终目的是得到真正的字节流而非仅仅是文本描述。 ```python number = 255 hex_string = hex(number)[2:].upper().zfill(2) # 移除前缀'0x', 转大写, 并填充至两位宽 print(hex_string) # 输出 FF ``` #### 利用 struct 模块打包数据 struct 是另一个非常有用的工具包,它允许按照 C 语言风格定义内存布局从而方便地处理各种类型的二进制数据结构体。下面的例子演示了怎样借助 struct 来准备适合通过 COM 端口传输的实际比特模式: ```python import struct def pack_int_as_bytes(value): """Pack an integer into four bytes.""" return struct.pack('>I', value) # '>I' means big-endian unsigned int value_to_send = 16777215 # This corresponds to FFFFFF in hexadecimal notation. packed_data = pack_int_as_bytes(value_to_send) print(packed_data.hex()) # Should display 'ffffff' ``` 此处我们选择了大于通常单字节能表达的最大范围的一个数字以强调多字节情况下的正确性[^5]。 #### 实际发送过程 最后一步就是调用之前提到过的 pySerial 库里的 `.write()` 方法执行物理层面的数据交换动作了。记得在此之前已经建立了有效的 Serial 对象实例并且确认两端设备都处于正常工作状态之中。 ```python with serial.Serial('/dev/ttyS1', 19200, timeout=1) as ser: ser.write(packed_data) ``` 这样就完成了从获取用户界面输入直到最终送达目标硬件整个流程里涉及到的关键技术要点介绍[^6]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值