Seu código é muito vago e não compreensível, mas posso lhe fornecer uma alternativa. Primeiro de tudo, se você quiser temp para passar por toda a seqüência de caracteres, você pode fazer algo como isto: O termo temp como a condição para simplesmente verifica se você chegou ao final da seqüência ou não. Se você tiver, temp será 0 (NUL) eo para fins. Agora, dentro do para, você quer encontrar os bits que compõem temp. Vamos dizer que imprimimos os bits: Para torná-lo um pouco mais genérico, que é converter qualquer tipo de bits, você pode mudar o bitindex 7 para bitindex sizeof (temp) 8-1O comando printf Estranho, este é um tema muito grande que Precisa de experiência - por favor preencha as informações que faltam, estenda as descrições e corrija os detalhes se puder Atenção: Este é sobre o comando printb - builtin - mas a descrição deve ser quase idêntica para um comando externo que segue POSIX. GNU Awk espera uma vírgula após a seqüência de caracteres de formato e entre cada um dos argumentos de um comando printf. Para obter exemplos, consulte: snippet de código. Ao contrário de outras documentações, eu não quero redirecioná-lo para a página de manual para a família de funções printf () C. No entanto, se you039re mais experientes, que deve ser a descrição mais detalhada para o formato seqüências de caracteres e modificadores. Devido a implementações históricas conflitantes do comando echo, o POSIX recomenda que o printf seja preferido ao echo. Geral O comando printf fornece um método para imprimir texto pré-formatado semelhante à interface do sistema printf () (função C). It039s significou como sucessor de eco e tem muito mais recursos e possibilidades. Além de outras razões, POSIX tem um argumento muito bom para recomendá-lo: Ambos os principais sabores históricos do comando echo são exclusivos mútuos, eles colidem. Um comando quotnewquot tinha que ser inventado para resolver o problema. Sintaxe O formato de texto é fornecido em ltFORMATgt. Enquanto todos os argumentos que o formatstring pode apontar são dados depois disso, aqui, indicado por ltARGUMENTSgt. Assim, um típico printf - call se parece com: onde quotSome: snName: snquot é a especificação de formato e as duas variáveis são passadas como argumentos, o s nos formatostring aponta para (para cada especificador de formato que você dá, printf aguarda um argumento) . Opções Se for dada, a saída é atribuída à variável VAR em vez de impressa para stdout (comparável a sprintf () de alguma forma) A opção - v não pode atribuir diretamente aos índices de matriz em versões do Bash anteriores ao Bash 4.1. Em versões mais recentes do que 4.1, deve-se ter cuidado ao executar expansões no primeiro argumento não-opção do printf, pois isso abre a possibilidade de uma vulnerabilidade de injeção de código fácil. Onde o eco pode, obviamente, ser substituído por qualquer comando arbitrário. Se for necessário, especifique uma seqüência de caracteres de codificação rígida ou use - para assinalar o fim das opções. O mesmo problema exato também se aplica a leitura. E um semelhante ao mapfile. Embora realizar expansões em seus argumentos é menos comum. Argumentos É claro que no shell, o que significa que os argumentos são apenas seqüências de caracteres, no entanto, as notações comuns C mais algumas adições para as constantes de número são reconhecidas para dar um argumento de número para printf. É essencialmente feito um caractere (ou byte) em um fluxo de tempo - uma seqüência de caracteres que flui de um lugar para outro fluxo de entrada. Os fluxos de dados do dispositivo de entrada (teclado, arquivo, etc) em fluxo de saída de memória. Fluxos de dados da memória para o dispositivo de saída (monitor, arquivo, impressora, etc.) Fluxos de E / S padrão (com significado interno) stdin. Fluxo de entrada padrão (padrão é o teclado) stdout. Fluxo de saída padrão (padrão para monitorar) stderr. Fluxo de erro padrão stdio. h - contém funções de E / S básicas scanf. Lê a entrada padrão (stdin) printf. Escreve para a saída padrão (stdout) Existem outras funções semelhantes a printf e scanf que gravam e lêem de outros fluxos Como incluir, para C ou C compilador E / S formatada - refere-se à conversão de dados para e de um fluxo De caracteres, para impressão (ou leitura) em formato de texto simples Todos os E / S de texto que fazemos é considerado E / S formatada A outra opção é ler / escrever informações binárias diretas (comuns com E / S de arquivo, por exemplo) Saída com printf Recap O formato básico de uma chamada de função printf é: onde: formatstring é o layout do que está sendo impresso listofexpressions é uma lista separada por vírgulas de variáveis ou expressões produzindo resultados a serem inseridos na saída Para produzir literais de seqüência, basta usar um parâmetro em Printf. A seqüência de caracteres em si Especificadores de conversão Um especificador de conversão é um símbolo que é usado como um espaço reservado em uma seqüência de caracteres de formatação. Para saída inteira (por exemplo), d é o especificador que contém o lugar para inteiros. Aqui estão alguns especificadores de conversão comumente usados (não uma lista abrangente): Impressão de inteiros Para produzir um inteiro, use d na seqüência de caracteres de formato e uma expressão de inteiro no listofexpressions. Podemos especificar o campo wicth (ou seja, quantos espaços o item imprime). Padrão para justificação à direita. Coloque um número entre o e o d. Neste exemplo, a largura do campo é 10: Para justificar à esquerda, use um número negativo na largura do campo: Se a largura do campo for muito pequena ou não especificada, o padrão será o número mínimo de caracteres necessários para imprimir o item: Especificando o campo A largura é mais útil quando se imprime várias linhas de saída que se destinam a alinhar em um formato de tabela Impressão Números de ponto flutuante Use o modificador f para imprimir valores de ponto flutuante em notação fixa: Use e para notação exponencial: Observe que o e02 significa tempos 10 para a segunda potência Você também pode controlar a precisão decimal, que é o número de lugares após o decimal. A saída será arredondada para o número apropriado de casas decimais, se necessário: A largura do campo também pode ser controlada, como com números inteiros: No especificador de conversão, o número antes do decimal é largura do campo e o número depois é a precisão. (Neste exemplo, 9 e 2). -9.2 seria justificado à esquerda em uma largura de campo de 9, como com inteiros caracteres de impressão e seqüências de caracteres Use o especificador de formatação c para caracteres. O tamanho do campo padrão é 1 caractere: Use s para imprimir strings. As larguras de campo funcionam exatamente como com inteiros: output. c - contém todas as saídas de amostra acima. Tente executá-lo você mesmo scanf Noções básicas Para ler dados de entrada padrão (teclado), chamamos a função scanf. A forma básica de uma chamada para scanf é: A string de formato é como a de printf Mas em vez de expressões, precisamos de espaço para armazenar dados de entrada, daí a lista de endereços de variáveis Se x é uma variável, então a expressão x significa endereço de X scanf exemplo: Especificadores de conversão Principalmente o mesmo que para a saída. Algumas pequenas diferenças Use f para o tipo float. Mas use lf para tipos duplos e longos duplos O tipo de dados lido, o especificador de conversão ea variável usada precisam corresponder no tipo O espaço em branco é ignorado por padrão em leituras numéricas consecutivas. Mas não é ignorado para entradas de caracteres / string. Exemplo Exemplo de execução 1 Entrada de usuário sublinhada, para distingui-la da saída do programa Exemplo de execução 2 Observe que nesta execução de amostra, o caractere que foi lido NÃO era a letra N. Era o espaço. (Lembre-se, espaço em branco não pulado no personagem lê). Isso pode ser contabilizado. Considere se a linha scanf era assim: Existe um espaço entre f e c na cadeia de formato. Isso permite que o usuário digite um espaço. Suponha que esta seja a entrada digitada: Em seguida, a variável de caractere c conterá agora o N. input2.c - uma versão do exemplo com essa alteração está vinculada aqui Entrada Interativa Você pode tornar a entrada mais interativa, alertando o usuário com mais cuidado. Isso pode ser tedioso em alguns lugares, mas em muitas ocasiões, torna os programas mais user-friendly. Exemplo: Uma boa maneira de aprender mais sobre scanf é tentar várias entradas em várias combinações e digitar em casos de teste - veja o que acontece printf / scanf com C-strings Uma seqüência de caracteres C inteira pode ser facilmente impressa, Juntamente com o nome da matriz char armazenar a seqüência de caracteres (como o argumento preencher essa posição): Tenha cuidado para usar somente isso em char arrays que estão sendo usados como seqüências de estilo C. (Isso significa, somente se o caractere nulo estiver presente como um terminador). Da mesma forma, você pode ler uma string em uma matriz char com scanf. A seguinte chamada permite a entrada de uma palavra (até 19 caracteres e um carácter nulo de terminação) a partir do teclado, que é armazenado na matriz palavra1: Os caracteres são lidos a partir do teclado até o primeiro espaço em branco (espaço, tabulação, nova linha) É encontrado. A entrada é armazenada na matriz de caracteres e o caractere nulo é anexado automaticamente. Observe também que o não era necessário na chamada scanf (word1 foi usado, em vez de word1). Isso é porque o nome da matriz por si só (sem índice) é realmente uma variável que armazena um endereço (um ponteiro).Finalmente tornar-se que o aumento de mama masculino 8230Naturally Um produto de ervas e natural mama realce como Brestrogen é uma poderosa alternativa para mama Cirurgia de aumento ou aumento. O creme de peito é um produto popular para a ampliação do peito que é esfregado diretamente sobre a área da mama em vez de ingerido oralmente através de pílulas e líquidos. Brestrogen usa muitos dos mesmos ingredientes encontrados em pílulas e líquidos para o realce do peito, um dos quais é estrogênios vegetais para estimular o crescimento da mama. Este creme de aumento de mama contém ingredientes como pueraria mirifica. Existem outros estrogênios de plantas e combinações de fitoestrógenos que são usados no creme do realce do peito. Recomenda-se conhecer os ingredientes em Brestrogen ao considerar este creme da ampliação do peito. Queremos que você esteja preparado para avaliar o creme de aumento de mama para fins de segurança e eficácia. Isso é útil para garantir que você não é alérgico a nenhum dos ingredientes. Tipicamente um creme do realce do peito tal como Brestrogen é esfregado dentro uma ou duas vezes um dia na área do peito até que totalmente absorvido. Mesmo quando você seguir as instruções do produto, você não vai ver os resultados no dia seguinte, como faria com cirurgias de aumento do peito. Mas duas das vantagens são sem cicatrizes e sem tempo de recuperação. Usar Brestrogen consistentemente para dentro de um período de duas semanas revelará mudanças aos homens e às mulheres. Para um resultado mais permanente, it8217s recomendado para usar Brestrogen em uma base diária para um intervalo de tempo 3-6 meses. Apenas como um lembrete: os resultados são diferentes para pessoas diferentes. Muitas vezes, este creme de mama acessório funciona melhor se usado com outros realçadores de peito natural, tais como exercícios para melhorar o peito, boa nutrição e bons hábitos de sono. Uma vantagem que o Brestrogen tem sobre os suplementos orais é que o creme é aplicado na área alvo 8211 das glândulas mamárias. Ervas e líquidos devem viajar através do estômago e para a corrente sanguínea antes de atingir os receptores de estrogênio. Também os suplementos orais requerem doses maiores para obter os mesmos resultados. Brestrogen é atraente para o mero fato de que os ingredientes naturais imitam os efeitos do estrogênio, estimulando o crescimento do peito. Você tem a vantagem de usar um produto que é 100 natural e mais seguro do que hormônios sintéticos. Brestrogen é uma alternativa adequada para os indivíduos que querem fazer uma transformação em sua área de mama, sem o risco de hormones. quot eu preciso processar este personagem como um número binário para estabelecer se durante o processo de transmissão os dados tem corrompido. quot Im não Claro que eu entendo Parece que neste caso você não precisa exibir esse UCHAR como binário ou hexadecimal, mas apenas para fazer alguma operação lógica bitwise e mudanças naquele UCHAR. Algo como contar o número de 1 bits desse uchar por exemplo: unsigned char c 93 int bitcount 0 printf (quotbitcount: dnquot, bitcount) sábado, 09 de dezembro de 2006 21:11 Isso é exatamente o que eu estava procurando (um carry ). Mas com alguns ajustes para o pedaço de código que você me deu eu consigo fazê-lo unsigned char c 93 printf (ctxnn, c, c) se (c amp 128) Dj1 para (j0jlt8j) printf (d, Dj) domingo, dezembro 10, 2006 2:20 PM Todas as respostas Para formato hexadecimal printf tem o especificador de formato x que faz isso. Para binário, você pode usar a função itoa: unsigned char ch 934 // algum valor de char não assinado aleatório para exibir char text16 // buffer para usar com itoa printf (quotxnquot. ch) // hex usando o especificador de formato x itoa (ch, text, 16 ) // hex usando itoa com base 16 printf (texto quotsnquot.) Itoa (ch, text, 2) // usando itoa com base 2 printf (quotsnquot, texto) Sábado, 09 de Dezembro de 2006 19:49 Obrigado pela Resposta rápida Este pedaço de código funciona em circunstâncias normais, mas no meu caso particular, o UCHAR faz parte de uma mensagem entregue por um UART, ao qual um fluxo de dados é anexado. Assim, eu preciso processar este caractere como um número binário para estabelecer se durante o processo de transmissão os dados tem corrompido. Eu preciso processar este personagem como um número binário para estabelecer se durante o processo de transmissão os dados tem corrupted. quot Im não tenho certeza que eu entendo. Parece que neste caso você não precisa exibir esse UCHAR como binário ou hexadecimal, mas apenas para fazer alguma operação lógica bitwise e mudanças naquele UCHAR. Algo como contar o número de 1 bits de que uchar por exemplo: unsigned char c 93 int bitcount 0 printf (quotbitcount: dnquot, bitcount) sábado, 09 de dezembro de 2006 9:11 PM Eu poderia recuperar bit by bit, deslocando para a direita (Gtgt) ou para a esquerda (ltlt) Ie Cf / 66 - 01010101 / Onde o último bit foi. Domingo, 10 de dezembro de 2006 10:02 Não, você não pode. Você precisa testar o primeiro bit, mudar, testar novamente e assim por diante. Em linguagem assembly, o bit que sai geralmente pode ser encontrado em algo chamado quotcarry flagquot e ele pode ser testado lá, mas C / C não tem tal coisa. Domingo, 10 de dezembro de 2006 1:18 PM Isso é exatamente o que eu estava procurando (um carry). Mas com alguns ajustes para o pedaço de código que você me deu eu consigo fazê-lo unsigned char c 93 printf (ctxnn, c, c) se (c amp 128) Dj1 para (j0jlt8j) printf (d, Dj) domingo, dezembro 10, 2006 2:20 PM Isto não olha direito a mim. Quarta-feira, 07 de novembro de 2007 17:25 Microsoft está conduzindo uma pesquisa on-line para entender sua opinião sobre o site da Msdn. Se você optar por participar, o questionário on-line será apresentado a você quando você deixar o site Msdn. Você gostaria de participar
No comments:
Post a Comment