将一个整数转换为三个十六进制变量

问题描述 投票:0回答:0

我在尝试将 6 位数字转换为三个十六进制数字时遇到问题 我正在使用 Arduino Nano 我已经做了以下

  • 转换为字符串 Hexa
  • 将带有子串的字符串切割成另外三个字符串 但是我的 CAN 库想要接收 char 变量 所以我确实将字符串转换为 char 但它缺少“0x00”而只使用“00” 而我的 can library (mcp_can) 不想要那个

感谢您阅读本文

  • 尝试发送没有“0x”后缀的字符串:没有用
  • 尝试将“0x”后缀添加到字符中:没有用
  • 尝试发送小数:没有用
  • 如果我手动发送带有“0x”后缀的六进制内容,它就可以工作

编辑:代码,我觉得太可怕了

    void splitAndConvert(int bignumber)
    { 
      int ID6;
      int ID7;
      int ID8; 
      String FirstPart; 
      String SecondPart;
      String ThirdPart;

      String BigNumberHexa = String(bignumber, HEX);
      
      if (BigNumberHexa.length() <= 2) {
        FirstPart = "0"; 
        SecondPart = "0";    
        ThirdPart = BigNumberHexa;
      }
      else if (BigNumberHexa.length() < 4) {
        FirstPart = "0";
        SecondPart = BigNumberHexa.substring(0,BigNumberHexa.length() - 2);
        ThirdPart = BigNumberHexa.substring(BigNumberHexa.length() - 2,BigNumberHexa.length());
      }
      else if (BigNumberHexa.length() < 6) {
        FirstPart = BigNumberHexa.substring(0,BigNumberHexa.length()-4);
        SecondPart = BigNumberHexa.substring(BigNumberHexa.length() - 4,BigNumberHexa.length() - 2);
        ThirdPart = BigNumberHexa.substring(BigNumberHexa.length() - 2,BigNumberHexa.length());
      }
      else {

      }
      ID6 = ThirdPart.toInt();
      ID7 = SecondPart.toInt();
      ID8 = ThirdPart.toInt();
            
      unsigned char DataToSend[8] = {0x00, 0x00, 0x00, 0x00, 0x00, ID6, ID7, ID8};
      can.sendMsgBuf(0x001, 0, 8, DataToSend);
}
c++ arduino can-bus
© www.soinside.com 2019 - 2024. All rights reserved.