【问题标题】:Leading zeros in Matlab char arrayMatlab char数组中的前导零
【发布时间】:2018-04-09 14:26:11
【问题描述】:

我有一个包含零的整数数组,但是当我将它转换为 char 数组时,前导零消失了。如何在 char 数组中使用前导零?

例如:它打印' 4D9' 而不是'004D9'。如何打印前导零?

【问题讨论】:

    标签: arrays matlab char zero leading-zero


    【解决方案1】:

    假设您要打印带有前导零的十六进制整数,您只需要formatspec 中的前导0 标志:

    >> n = 1241;
    >> s = num2str(n,'%05X')
    s =
    004D9
    

    【讨论】:

    • 谢谢,但即使我将它转换为 uint32,当我想检索前导零仍然消失的 char 数组时,它也不能与我的 char 数组一起使用
    • @mariafrank 请发布您的代码的minimal, complete, verifiable example
    • 例如我有 char 数组它的第一行应该是 A(1,:) = 004D 第二个 A(2,:) = 96FA 第一个字符串必须以2个零,但不是显示零,而是空格`4D`,当我尝试将它们保存到文本文件时,它将被保存为空格,当我调用文本文件时,它将忽略第一个字符串并打印只有第二个是96FA 我该如何解决这个问题?
    • 我有一个 char 数组,我希望它具有特定大小,因此我将其转换为 uint32,然后我在开始时使用零填充使其大小等于所需大小,之后我将它转换回 char 数组,但零已经消失了。
    • @mariafrank 好的,所以你“有一个整数数组”的问题中的主要陈述是不正确的。你试过A = strrep(A,' ','0')吗?
    【解决方案2】:

    我遍历数字数组中的每个元素并将其转换为字符串。然后我将它们连接在一起

    a = [0,0,2,3,4,5,6]; 
    my_str = '';
    
    for ii=1:numel(a)
        my_str(ii) = num2str(a(ii));
    end
    disp(my_str)
    

    这给出了输出 '0023456'

    【讨论】:

    • 谢谢,我的数组是一个字符数组,这个方法不起作用
    猜你喜欢
    • 1970-01-01
    • 2012-03-05
    • 2017-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-26
    • 1970-01-01
    相关资源
    最近更新 更多